home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / inter36b.zip / INTERRUP.I < prev    next >
Text File  |  1993-08-01  |  341KB  |  9,354 lines

  1. Interrupt List, part 9 of 10
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. --------*-60---------------------------------
  4. INT 60 - reserved for user interrupt
  5. --------v-60---------------------------------
  6. INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
  7.    The "Zero Bug" virus hooks this vector.  It considers itself installed if
  8.    offset 103h of the handler's segment contains the bytes "ZE"
  9. SeeAlso: INT 32,INT 44"VIRUS",INT 61"SEMTEX"
  10. --------d-60---------------------------------
  11. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  12. SeeAlso: INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec",INT 64"Adaptec"
  13. Notes:    this vector stores the first four bytes of the parameter table for
  14.       hard disk 0
  15.     these vectors are used by the following Adaptec controllers:
  16.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  17.     these vectors are NOT used by the following Adaptec controllers:
  18.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  19. --------b-60---------------------------------
  20. INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
  21.    supplies a number of subfunctions which perform such functions as drawing
  22.    boxes and menus, and provide input line editing
  23. SeeAlso: INT 61"Atari"
  24. --------V-60---------------------------------
  25. INT 60 - Nabbit v2.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  26. Program: Nabbit is a shareware resident screen data grabber by RSE Inc.
  27. Note:    Nabbit searches INT 60 through INT 66 for a vector which points at
  28.       its ASCIZ signature string "iG" (69h 47h 00h), and uses the first
  29.       free vector in that range it is it not already installed
  30. --------V-60---------------------------------
  31. INT 60 U - Buffit v3.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  32. Program: Buffit is a shareware scrollback utility by D.T. Hamilton
  33. Notes:    Buffit searches INT 60 through INT 6F for a vector which points at
  34.       the ASCII signature "Buffit  ", and uses the first free vector in
  35.       that range if it is not already installed
  36.     there is a private entry point immediately following the signature
  37.       string, i.e. eight bytes beyond the address pointed at by the
  38.       interrupt
  39.  
  40. Call private entry point with:
  41.     AH = function
  42.         00h get information and hotkey state
  43.         01h get information and toggle hotkey state
  44. Return: AH = new hotkey state (00h enabled, 01h disabled)
  45.     AL = hotkey scan code
  46.     BH = hotkey shift states
  47.     BL = ??? (01h)
  48.     CX = segment of resident code
  49.     DH = niterrupt number used for signature pointer
  50.     DL = ??? (00h)
  51.     SI = INT 09 handler offset
  52.     DI = INT 21 handler offset
  53. Index:    hotkeys;Buffit
  54. ----------60---------------------------------
  55. INT 60 - PC-IPC API
  56.     STACK:    DWORD    pointer to parameter block (see below)
  57. Return: STACK:    unchanged
  58. Program: PC-IPC is a shareware TSR by Donnelly Software Engineering which
  59.       allows communication between independent programs
  60. Note:    INT 60 is the default, any interrupt vector may be used by specifying
  61.       the vector on the commandline
  62.  
  63. Format of parameter block:
  64. Offset    Size    Description
  65.  00h    WORD    caller's ID
  66.  02h    WORD    to ID
  67.  04h    WORD    command code (see below)
  68.  06h    WORD    returned status (see below)
  69.  08h    WORD    returned error code (see below)
  70.  0Ah    WORD    size of data
  71.  0Ch    DWORD    pointer to data buffer
  72.  
  73. Values for command code:
  74.  01h "IPC_CMND_INQUIRE"     inquire current status
  75.         set status field, writes WORD to data buffer containing free
  76.           message space in bytes, and sets the "size" field to the
  77.           number of messages waiting
  78.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  79.         ignored unless called with the same ID that disabled PC-IPC
  80.  03h "IPC_CMND_DISABLE" disable PC-IPC
  81.  04h "IPC_CMND_INSTALL" reset PC-IPC
  82.  06h "IPC_CMND_RDATA"    read data
  83.         returns first message in data buffer, sets "size" to message
  84.           length and "to ID" field to sender's ID
  85.         if no messages available, bit 4 of status is cleared and "size"
  86.           is set to zero
  87.  07h "IPC_CMND_SDATA"    send data
  88.  08h "IPC_CMND_REQID"    require user ID
  89.         create a new recognized ID and return in "caller's ID" field
  90.  09h "IPC_CMND_DELID"    cancel user ID
  91.         delete caller's ID from pool of recognized IDs
  92.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  93.  0Bh "IPC_CMND_VERS"    get PC-IPC version
  94.         string representing version returned in data buffer, "size"
  95.           field set to length of string
  96.  
  97. Bitfields for returned status:
  98.  bit 0    unused
  99.  bit 1    IPC enabled
  100.  bit 2    IPC installed
  101.  bit 3    error
  102.  bit 4    message(s) available
  103.  
  104. Values for error code:
  105.  00h    no error
  106.  01h    invalid command or parameter
  107.  02h    only process 0 can install/reset IPC
  108.  03h    process can not install/reset IPC
  109.  04h    IPC is not enabled
  110.  05h    process can not disable IPC
  111.  06h    invalid destination process ID
  112.  07h    invalid sending process ID
  113.  08h    invalid data destination
  114.  09h    no more process IDs available
  115.  0Ah    can not relinquish that process ID
  116.  0Bh    message space is full
  117.  0Ch    IPC is not installed
  118. --------R-60---------------------------------
  119. INT 60 - Tangram Arbiter - API
  120. Notes:    Arbiter may use any interrupt from 60h to 66h (parameterized)
  121.     identified by string "@ARB_API" immediately following a short jump at
  122.       the interrupt handler address
  123.     Arbiter makes a PC disk look like a slow disk over an SNA link to an
  124.       IBM mainframe
  125. --------G-60---------------------------------
  126. INT 60 U - INTRSPY/CMDSPY API
  127. Program: INTRSPY is a script-driven debugger included with the book
  128.       _Undocumented_DOS_.
  129. Notes:    INTRSPY will hook the first available interrupt in the range 60h-67h.
  130.     The installation check is to
  131.       a) determine that the handler is an IRET instruction
  132.       b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
  133.       If INTRSPY is installed, the DWORD immediately after the IRET stores
  134.       its entry point.
  135. Index:    installation check;INTRSPY
  136.  
  137. Call INTRSPY entry point with:
  138.     AH = function
  139.         00h ???
  140.         01h set current directory (for use in reporting)
  141.         ES:DI -> counted string containing directory name (max 79 char)
  142.         02h set name of script file
  143.         ES:DI -> counted string containing file name (max 79 chars)
  144.         03h set script arguments
  145.         ES:DI -> counted string containing arguments (max 79 chars)
  146.         04h get directory set with function 01h
  147.         ES:DI -> 80-byte buffer for directory name
  148.         05h get name of script file
  149.         ES:DI -> 80-byte buffer for script filename
  150.         06h get script arguments
  151.         ES:DI -> 80-byte buffer for script arguments
  152.         07h get ???
  153.         CL = 00h-15h specifies what to get
  154.         ES:DI -> WORD to be set with desired value on return
  155.         08h get ???
  156.         ES:DI -> WORD to be set with returned value
  157.         09h get ???
  158.         ES:DI -> WORD to be set with returned value
  159.         0Bh store code for interrupt handler???
  160.         ES:DI -> data
  161.         CX = number of bytes
  162.         0Ch ???
  163.         ES:DI -> ???
  164.         0Dh get ???
  165.         ES:DI -> BYTE to be set with returned value
  166.         0Eh set ??? flag
  167.         0Fh clear ??? flag
  168.         10h ???
  169.         Return: AL = 04h or 05h if failed
  170.         11h ???
  171.         Return: AL = 05h if failed
  172.         12h get ???
  173.         ES:DI -> buffer
  174.         Return: CX = number of bytes returned in buffer
  175.         13h ???
  176. Return: AH = 00h
  177.     AL = status
  178.         00h successful
  179.         01h invalid function
  180.         02h ???
  181.         03h ???
  182.         04h ???
  183.         05h ???
  184. --------u-60---------------------------------
  185. INT 60 U - PC/370 v4.2 - ???
  186.     ???
  187. Return: ???
  188. Program: PC/370 is an IBM 370 emulator by Donald S. Higgins
  189. Note:    this is the default interrupt, however the documentation includes
  190.       instructions for patching the system for another interrupt
  191. SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
  192. --------r-60---------------------------------
  193. INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
  194. SeeAlso: INT 61"JPI"
  195. --------N-60---------------------------------
  196. INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
  197. Notes:    The handler for the interrupt will start with a 3-byte jump
  198.       instruction, followed by the ASCIZ string "PKT DRVR" (the
  199.       terminating NUL is significant).
  200.     To find the interrupt being used by the driver, an application should
  201.       scan through interrupt vectors 60h to 80h (20h through FFh for
  202.       v1.10+ of the specification) until it finds one with the "PKT DRVR"
  203.       string.
  204.     AH values of 80h to FFh have been reserved for user-defined additions.
  205. --------b-60----DI0100-----------------------
  206. INT 60 u - HP 95LX System Manager - WAIT FOR EVENT
  207.     DI = 0100h
  208.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  209.         DWORD    pointer to event record (see below)
  210. Return: event record filled
  211.     STACK unchanged
  212. Note:    this call will timeout after about 500ms
  213. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0101h,INT 61"HP 95LX",INT 62"HP 95LX"
  214.  
  215. Values for event type:
  216.  00h    no events
  217.  01h    keystroke available
  218.  02h    Ctrl-Break
  219.  03h    reactivation (always follows deactivation event)
  220.  04h    about to deactivate (sleep)
  221.     next get-event call will not return until reactivated
  222.  05h    forced application termination
  223.  06h    1-2-3 bridge service request (only given to 1-2-3)
  224.  07h    request to grow
  225.  08h    request to shrink
  226.  09h    application's alarm expired
  227.  0Ah    daily chance to set an alarm
  228.  0Bh    system date or time has been changed
  229.  
  230. Format of event record:
  231. Offset    Size    Description
  232.  00h    WORD    event type (see above)
  233.  02h    WORD    ASCII code page 850 translation of keystroke
  234.         or grow/shrink amount in paragraphs or 0000h if error
  235.         or alarm expiration data
  236.  04h    BYTE    scan code from BIOS
  237.  05h    BYTE    shift key states at time keystroke is retrieved
  238.  06h    WORD    LICS translation of keystroke
  239.  08h    BYTE    function key number (1-2-3 only)
  240.  09h    DWORD    pointer to 1-2-3 bridge record (see INT 60/DI=0104h)
  241.         or pointer to time change structure (see below)
  242. Note:    if the System Manager is awaiting the conclusion of a bridge service
  243.       or grow/shrink call and the event type field is set to FFFFh on
  244.       entry, the SysMgr will resume
  245.  
  246. Format of time change structure:
  247. Offset    Size    Description
  248.  00h    WORD    old year
  249.  02h    BYTE    old month
  250.  03h    BYTE    old date
  251.  04h    BYTE    old day
  252.  05h    BYTE    old hour
  253.  06h    BYTE    old minute
  254.  07h    BYTE    old second
  255.  08h    BYTE    old hundredth of a second
  256.  09h  9 BYTEs    new time in same format as old time
  257. --------b-60----DI0101-----------------------
  258. INT 60 u - HP 95LX System Manager - CHECK FOR EVENT
  259.     DI = 0101h
  260.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  261.         DWORD pointer to event record (INT 60/DI=0100h)
  262. Return: event record filled
  263.     STACK unchanged
  264. Note:    this call returns immediately if no event is available
  265. SeeAlso: INT 60/DI=0100h
  266. --------b-60----DI0102-----------------------
  267. INT 60 u - HP 95LX System Manager - "SH_STATUS"
  268.     DI = 0102h
  269.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  270. Return: ???
  271.     STACK unchanged
  272. --------b-60----DI0104-----------------------
  273. INT 60 u - HP 95LX System Manager - LOTUS 1-2-3 BRIDGE SERVICES
  274.     DI = 0104h
  275.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  276.         DWORD pointer to bridge record (see below)
  277. Return: ???
  278.     STACK unchanged
  279.  
  280. Values for function code:
  281.  00h    test
  282.  01h    get range
  283.  02h    "GETRANGE_ADDR"
  284.  03h    "SETRANGE_ADDR"
  285.  04h    "GETRANGE_DATA"
  286.  05h    "SETRANGE_DATA"
  287.  06h    recalculate
  288.  07h    get cursor
  289.  08h    set cursor
  290.  09h    redisplay
  291.  0Ah    cell type
  292.  0Bh    "CALCTYPE"
  293.  
  294. Format of bridge record:
  295. Offset    Size    Description
  296.  00h    WORD    function code (see above)
  297.  02h    WORD    return code from 1-2-3
  298.  04h 16 BYTEs    ASCII range name
  299.  14h    WORD    start column of range
  300.  16h    WORD    start row of range
  301.  18h    WORD    end column of range
  302.  1Ah    WORD    end row of range
  303.  1Ch    WORD    order in which data is placed in buffer
  304.  1Eh    WORD    buffer size
  305.  20h    WORD    offset within bridge record's segment of buffer for cell data
  306. --------b-60----DI0105-----------------------
  307. INT 60 u - HP 95LX System Manager - FLUSH KEYBOARD BUFFER
  308.     DI = 0105h
  309.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  310. Return: ???
  311.     STACK unchanged
  312. --------b-60----DI0106-----------------------
  313. INT 60 u - HP 95LX System Manager - YIELD CPU
  314.     DI = 0106h
  315.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  316.         DWORD pointer to ???
  317. Return: ???
  318.     STACK unchanged
  319. SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h
  320. --------b-60----DI0107-----------------------
  321. INT 60 u - HP 95LX System Manager - "NO_FINI" - REFUSE TERMINATION REQUEST
  322.     DI = 0107h
  323.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  324.         DWORD pointer to ???
  325. Return: ???
  326.     STACK unchanged
  327. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  328. --------b-60----DI0200-----------------------
  329. INT 60 u - HP 95LX System Manager - SETUP MENU
  330.     DI = 0200h
  331.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  332.         DWORD    pointer to menu data (see below)
  333.         DWORD    pointer to ???
  334.         WORD    number of items on menu???
  335.         WORD    ???
  336.         DWORD    pointer to ???
  337.         WORD    ???
  338.         DWORD    pointer to ???
  339. Return: ???
  340.     STACK unchanged
  341. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0201h,INT 60/DI=0203h,INT 60/DI=0205h
  342.  
  343. Format of menu data:
  344. Offset    Size    Description
  345.  00h 80 BYTEs    first line of menu text
  346.  50h 80 BYTEs    second line of menu text
  347.  A0h 80 BYTEs    third line of menu text
  348.  F0h    WORD    number of keywords
  349.  F2h    WORD    index of currently highlighted keyword or FFFFh
  350.  F4h    WORD    single prompt on top line if nonzero
  351.  F6h 20 BYTEs    which line each of 20 keywords is located on
  352. 10Ah 20 BYTEs    offset of each of 20 keywords within its line
  353. 11Eh 20 BYTEs    length of each of 20 keywords
  354. 132h 20 BYTEs    first letter of each of 20 keywords
  355. 146h 20 WORDs    offsets of long prompts for each of 20 keywords
  356. --------b-60----DI0201-----------------------
  357. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY MENU
  358.     DI = 0201h
  359.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  360.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  361. Return: ???
  362.     STACK unchanged
  363. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0206h
  364. --------b-60----DI0202-----------------------
  365. INT 60 u - HP 95LX System Manager - "MENU_ON" - ENABLE PROCESSING OF MENU
  366.     DI = 0202h
  367.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  368.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  369. Return: ???
  370.     STACK unchanged
  371. SeeAlso: INT 60/DI=0200h,INT 60/DI=0201h,INT 60/DI=0203h
  372. --------b-60----DI0203-----------------------
  373. INT 60 u - HP 95LX System Manager - REMOVE MENU
  374.     DI = 0203h
  375.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  376.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  377. Return: ???
  378.     STACK unchanged
  379. SeeAlso: INT 60/DI=0201h,INT 60/DI=0202h,INT 60/DI=0204h,INT 60/DI=0208h
  380. --------b-60----DI0204-----------------------
  381. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER HANDLE MENU KEYSTROKE
  382.     DI = 0204h
  383.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  384.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  385.         WORD    keystroke
  386.         DWORD    pointer to WORD to receive selection number
  387. Return: buffer for selection number filled with index of selected menu item or
  388.       FFFFh if no final selection yet
  389.     STACK unchanged
  390. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0207h
  391. --------b-60----DI0205-----------------------
  392. INT 60 u - HP 95LX System Manager - INITIALIZE FILE SELECTION MENU
  393.     DI = 0205h
  394.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  395.         DWORD    pointer to file menu structure (see below)
  396.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  397.         DWORD    pointer to wildcard filespec for initial file list
  398.         WORD    row???
  399.         WORD    column???
  400. Return: ???
  401.     STACK unchanged
  402. SeeAlso: INT 60/DI=0200h,INT 60/DI=0206h,INT 60/DI=0208h
  403.  
  404. Format of file menu structure:
  405. Offset    Size    Description
  406.  00h    DWORD    pointer to ASCIZ base directory name
  407.  04h    DWORD    pointer to ASCIZ file pattern (wildcard filespec)
  408.  08h    DWORD    pointer to file list workspace, at least 1024 bytes (see below)
  409.  0Ch    WORD    size of file list workspace in bytes
  410.  0Eh    WORD    starting row (-3 is topmost, 0 is first non-"reserved" line)
  411.  10h    WORD    starting column
  412.  12h    WORD    number of lines
  413.  14h    WORD    number of columns
  414.  16h    WORD    number of files displayed on each line
  415. ---the remaining fields are initialized by the System Manager---
  416.  18h    WORD    0000h if first edit character, else multiline
  417.  1Ah    WORD    number of files in file list
  418.  1Ch    WORD    max files workspace has room for
  419.  1Eh    WORD    file at top of list
  420.  20h    WORD    index of file to highlight
  421.  22h    WORD    index of file to unhighlight
  422.  24h    WORD    current focus (01h FMENU, 02h EDIT)
  423.  
  424. Format of file list workspace entry:
  425. Offset    Size    Description
  426.  00h    BYTE    file attributes
  427.  01h    WORD    file time (see INT 21/AX=5700h)
  428.  03h    WORD    file date (see INT 21/AX=5700h)
  429.  05h    DWORD    file size
  430.  09h 13 BYTEs    ASCIZ filename
  431. --------b-60----DI0206-----------------------
  432. INT 60 u - HP 95LX System Manager - DISPLAY/REDISPLAY FILE SELECTION MENU
  433.     DI = 0206h
  434.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  435.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  436.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  437. Return: ???
  438.     STACK unchanged
  439. SeeAlso: INT 60/DI=0205h
  440. --------b-60----DI0207-----------------------
  441. INT 60 u - HP 95LX System Manager - LET SYSMGR PROCESS FILE SEL MENU KEYSTROKE
  442.     DI = 0207h
  443.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  444.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  445.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  446.         WORD    keystroke
  447. Return: AX = status
  448.         0000h keystroke processed, call INT 60/DI=0206h to refresh menu
  449.         0001h redisplay application area before refreshing menu
  450.         0002h user confirmed selection, filename is in edit record's buffer
  451.         0003h user aborted menu
  452.         FFFBh bad filename
  453.         FFFCh bad directory
  454.         FFFDh bad drive
  455.         FFFEh unknown keystroke
  456.         FFFFh keystroke known but invalid in current context
  457.     STACK unchanged
  458. SeeAlso: INT 60/DI=0205h,INT 60/DI=0208h
  459. --------b-60----DI0208-----------------------
  460. INT 60 u - HP 95LX System Manager - REMOVE FILE SELECTION MENU
  461.     DI = 0208h
  462.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  463.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  464.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  465. Return: ???
  466.     STACK unchanged
  467. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0205h,INT 60/DI=0206h
  468. --------b-60----DI0300-----------------------
  469. INT 60 u - HP 95LX System Manager - DISPLAY STRING
  470.     DI = 0300h
  471.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  472.         WORD    starting row (-3 is topmost, 0 is first user line)
  473.         WORD    starting column
  474.         DWORD    pointer to string
  475.         WORD    length of string
  476.         WORD    display style: 0000h normal, 0001h reverse video
  477.         WORD    "OSTYLE"
  478. Return: ???
  479.     STACK unchanged
  480. SeeAlso: INT 60/DI=0F03h,INT 60/DI=1005h
  481. --------b-60----DI0301-----------------------
  482. INT 60 u - HP 95LX System Manager - CLEAR PORTION OF SCREEN
  483.     DI = 0301h
  484.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  485.         WORD    starting row (-3 is topmost, 0 is first user line)
  486.         WORD    starting column
  487.         WORD    number of rows
  488.         WORD    number of columns
  489. Return: ???
  490.     STACK unchanged
  491. SeeAlso: INT 60/DI=0302h,INT 60/DI=1005h
  492. --------b-60----DI0302-----------------------
  493. INT 60 u - HP 95LX System Manager - SCROLL PORTION OF SCREEN
  494.     DI = 0302h
  495.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  496.         WORD    starting row???
  497.         WORD    starting column???
  498.         WORD    height of scroll region???
  499.         WORD    width of scroll region???
  500.         WORD    number of lines to scroll region???
  501. Return: ???
  502.     STACK unchanged
  503. SeeAlso: INT 60/DI=0301h
  504. --------b-60----DI0303-----------------------
  505. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_XCHG"
  506.     DI = 0303h
  507.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  508.         WORD    ???
  509.         WORD    ???
  510.         WORD    ???
  511.         WORD    ???
  512.         DWORD    pointer to ???
  513. Return: ???
  514.     STACK unchanged
  515. --------b-60----DI0304-----------------------
  516. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRATTR"
  517.     DI = 0304h
  518.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  519.         DWORD    pointer to ???
  520.         WORD    ???
  521. Return: ???
  522.     STACK unchanged
  523. --------b-60----DI0305-----------------------
  524. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRRVRT"
  525.     DI = 0305h
  526.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  527.         WORD    ???
  528.         WORD    ???
  529.         DWORD    pointer to ???
  530.         WORD    ???
  531. Return: ???
  532.     STACK unchanged
  533. --------b-60----DI0307-----------------------
  534. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRINV"
  535.     DI = 0307h
  536.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  537.         WORD    ???
  538.         WORD    ???
  539.         WORD    ???
  540. Return: ???
  541.     STACK unchanged
  542. --------b-60----DI0308-----------------------
  543. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_ROWS_COLS"
  544.     DI = 0308h
  545.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  546. Return: ???
  547.     STACK unchanged
  548. --------b-60----DI0309-----------------------
  549. INT 60 u - HP 95LX System Manager - SET SCREEN (VIDEO???) MODE
  550.     DI = 0309h
  551.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  552.         WORD    new mode
  553. Return: ???
  554.     STACK unchanged
  555. --------b-60----DI030A-----------------------
  556. INT 60 u - HP 95LX System Manager - GET SCREEN (VIDEO???) MODE
  557.     DI = 030Ah
  558.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  559. Return: ???
  560.     STACK unchanged
  561. --------b-60----DI030B-----------------------
  562. INT 60 u - HP 95LX System Manager - SET CURSOR POSITION
  563.     DI = 030Bh
  564.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  565.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  566.         WORD    column
  567. Return: ???
  568.     STACK unchanged
  569. Note:    cursor is hidden if the specified position is not on the physical
  570.       display
  571. SeeAlso: INT 10/AH=02h,INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  572. --------b-60----DI0400-----------------------
  573. INT 60 u - HP 95LX System Manager - "EDIT_INIT"
  574.     DI = 0400h
  575.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  576.         DWORD    pointer to edit record (see below)
  577.         DWORD    pointer to string to be edited
  578.         WORD    initial length of string being edited
  579.         WORD    maximum length of edited string
  580.         WORD    row of edit field
  581.         WORD    leftmost column of edit field
  582. Return: ???
  583.     STACK unchanged
  584.  
  585. Format of edit record:
  586. Offset    Size    Description
  587.  00h    WORD    current length of edit buffer
  588.  02h    BYTE    flag for special processing on first character
  589.  03h    BYTE    flags
  590.         bit 0: tab handling
  591.  04h    WORD    editing in prompt window?
  592.  06h    DWORD    pointer to top line of prompt window message
  593.  0Ah    WORD    length of top line of prompt
  594.  0Ch    DWORD    pointer to second line of prompt window message
  595.  10h    WORD    length of second line of prompt
  596.  12h 80 BYTEs    workspace for editing
  597.  62h  2 WORDs    line array needed for multi-line editing
  598.  66h 36 BYTEs    multi-line edit record (see below)
  599.  8Ah    WORD    displayable columns
  600.  
  601. Format of multi-line edit record:
  602. Offset    Size    Description
  603.  00h    DWORD    pointer to user-supplied edit buffer
  604.  04h    WORD    length of edit buffer
  605.  06h    WORD    current cursor position
  606.  08h    WORD    starting row of edit area (-3 is topmost, 0 is first user line)
  607.  0Ah    WORD    starting column of edit area
  608.  0Ch    WORD    height of edit area
  609.  0Eh    WORD    width of edit area
  610.  10h    WORD    current top row (-3 is topmost, 0 is first user line)
  611.  12h    WORD    number of rows displayable
  612.  14h    BYTE    cursor column
  613.  15h    BYTE    01h if buffer has been modified
  614.  16h    BYTE    first displayable column (ticker fields only)
  615.  17h    BYTE    01h if wordwrap enabled, FFh if ticker field
  616.  18h    DWORD    pointer to array of line starts (at least one bigger than edit
  617.           area is high)
  618.  1Ch    BYTE    currently marking?
  619.  1Dh    BYTE    flag
  620.  1Eh    WORD    offset of mark start
  621.  20h    WORD    offset of mark end (inclusive)
  622.  22h    WORD    displayable columns
  623. --------b-60----DI0401-----------------------
  624. INT 60 u - HP 95LX System Manager - EDIT ON TOP LINE
  625.     DI = 0401h
  626.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  627.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  628.         DWORD    pointer to string to edit
  629.         WORD    initial length of string being edited
  630.         WORD    maximum length of edited string
  631.         DWORD    pointer to first line of prompt
  632.         WORD    length of first line
  633.         DWORD    pointer to second line of prompt
  634.         WORD    length of second line
  635. Return: ???
  636.     STACK unchanged
  637. --------b-60----DI0402-----------------------
  638. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY EDIT FIELD
  639.     DI = 0402h
  640.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  641.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  642. Return: ???
  643.     STACK unchanged
  644. --------b-60----DI0403-----------------------
  645. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER PROCESS EDITING KEYSTROK
  646.     DI = 0403h
  647.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  648.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  649.         WORD    keystroke
  650.         DWORD    pointer to WORD buffer for result code
  651. Return: result code buffer filled with 0001h if editing complete
  652.     STACK unchanged
  653. --------b-60----DI0404-----------------------
  654. INT 60 u - HP 95LX System Manager - "MDIT_INI"
  655.     DI = 0404h
  656.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  657.         DWORD    pointer to ???
  658.         WORD    ???
  659.         WORD    ???
  660.         WORD    ???
  661.         WORD    ???
  662.         DWORD    pointer to ???
  663.         WORD    ???
  664.         WORD    ???
  665.         WORD    ???
  666.         DWORD    pointer to ???
  667. Return: ???
  668.     STACK unchanged
  669. --------b-60----DI0405-----------------------
  670. INT 60 u - HP 95LX System Manager - "MDIT_DIS"
  671.     DI = 0405h
  672.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  673.         DWORD    pointer to ???
  674. Return: ???
  675.     STACK unchanged
  676. --------b-60----DI0406-----------------------
  677. INT 60 u - HP 95LX System Manager - "MDIT_KEY"
  678.     DI = 0406h
  679.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  680.         DWORD    pointer to ???
  681.         WORD    ???
  682. Return: ???
  683.     STACK unchanged
  684. --------b-60----DI0407-----------------------
  685. INT 60 u - HP 95LX System Manager - "MDIT_FIL"
  686.     DI = 0407h
  687.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  688.         DWORD    pointer to ???
  689.         DWORD    pointer to ???
  690. Return: ???
  691.     STACK unchanged
  692. --------b-60----DI0408-----------------------
  693. INT 60 u - HP 95LX System Manager - "MDIT_MARK"
  694.     DI = 0408h
  695.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  696.         DWORD    pointer to ???
  697. Return: ???
  698.     STACK unchanged
  699. --------b-60----DI0409-----------------------
  700. INT 60 u - HP 95LX System Manager - "MDIT_UNMARK"
  701.     DI = 0409h
  702.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  703.         DWORD    pointer to ???
  704. Return: ???
  705.     STACK unchanged
  706. --------b-60----DI040A-----------------------
  707. INT 60 u - HP 95LX System Manager - "MDIT_CUTMARK"
  708.     DI = 040Ah
  709.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  710.         DWORD    pointer to ???
  711. Return: ???
  712.     STACK unchanged
  713. --------b-60----DI040B-----------------------
  714. INT 60 u - HP 95LX System Manager - "MDIT_INS_STR"
  715.     DI = 040Bh
  716.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  717.         DWORD    pointer to ???
  718.         DWORD    pointer to ???
  719.         WORD    ???
  720. Return: ???
  721.     STACK unchanged
  722. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  723. --------b-60----DI0500-----------------------
  724. INT 60 u - HP 95LX System Manager - OPEN FILE
  725.     DI = 0500h
  726.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  727.         DWORD    pointer to file state record (see below)
  728.         DWORD    pointer to filename
  729.         WORD    length of filename
  730.         WORD    ???
  731.         WORD    suppress buffering if nonzero
  732. Return: AX = status
  733.     STACK unchanged
  734. SeeAlso: INT 60/DI=0501h,INT 60/DI=0502h,INT 60/DI=0508h
  735.  
  736. Format of file state record:
  737. Offset    Size    Description
  738.  00h    WORD    DOS file handle
  739.  02h    WORD    flags
  740.         bit 0: buffer contents valid
  741.         bit 1: buffer is dirty and must be written
  742.         bit 2: unbuffered I/O
  743.         bit 3: file is a character device
  744.  04h    DWORD    current DOS physical file offset (FFFFFFFFh if unknown)
  745.  08h    DWORD    DOS file offset of start of buffer
  746.  0Ch    DWORD    effective file offset as seen by caller
  747.  10h    WORD    number of bytes in file buffer
  748. ---buffered I/O only---
  749.  12h 512 BYTEs    file buffer
  750. --------b-60----DI0501-----------------------
  751. INT 60 u - HP 95LX System Manager - OPEN FILE IN READ-ONLY MODE
  752.     DI = 0501h
  753.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  754.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  755.         DWORD    pointer to filename
  756.         WORD    length of filename
  757.         WORD    ???
  758.         WORD    suppress buffering if nonzero
  759. Return: AX = status
  760.     STACK unchanged
  761. SeeAlso: INT 60/DI=0500h
  762. --------b-60----DI0502-----------------------
  763. INT 60 u - HP 95LX System Manager - CREATE NEW FILE
  764.     DI = 0502h
  765.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  766.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  767.         DWORD    pointer to filename
  768.         WORD    length of filename
  769.         WORD    ???
  770.         WORD    suppress buffering if nonzero
  771. Return: AX = status
  772.     STACK unchanged
  773. SeeAlso: INT 60/DI=0500h,INT 60/DI=0503h
  774. --------b-60----DI0503-----------------------
  775. INT 60 u - HP 95LX System Manager - CREATE OR TRUNCATE FILE
  776.     DI = 0503h
  777.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  778.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  779.         DWORD    pointer to filename
  780.         WORD    length of filename
  781.         WORD    ???
  782.         WORD    suppress buffering if nonzero
  783. Return: AX = status
  784.     STACK unchanged
  785. SeeAlso: INT 60/DI=0502h
  786. --------b-60----DI0504-----------------------
  787. INT 60 u - HP 95LX System Manager - READ FROM FILE
  788.     DI = 0504h
  789.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  790.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  791.         DWORD    pointer to data buffer
  792.         WORD    number of bytes to read
  793.         DWORD    pointer to WORD in which to return actual bytes read
  794. Return: ???
  795.     STACK unchanged
  796. SeeAlso: INT 60/DI=0505h
  797. --------b-60----DI0505-----------------------
  798. INT 60 - HP 95LX System Manager - WRITE TO FILE
  799.     DI = 0505h
  800.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  801.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  802.         DWORD    pointer to data
  803.         WORD    length of data
  804. Return: AX = status
  805.     STACK unchanged
  806. SeeAlso: INT 60/DI=0504h
  807. --------b-60----DI0506-----------------------
  808. INT 60 u - HP 95LX System Manager - SET FILE POSITION
  809.     DI = 0506h
  810.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  811.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  812.         WORD    ???
  813.         WORD    ???
  814. Return: ???
  815.     STACK unchanged
  816. SeeAlso: INT 60/DI=0507h
  817. --------b-60----DI0507-----------------------
  818. INT 60 u - HP 95LX System Manager - GET FILE POSITION
  819.     DI = 0507h "M_TELL"
  820.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  821.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  822.         DWORD    pointer to DWORD buffer for file position???
  823. Return: ???
  824.     STACK unchanged
  825. SeeAlso: INT 60/DI=0506h
  826. --------b-60----DI0508-----------------------
  827. INT 60 u - HP 95LX System Manager - CLOSE FILE
  828.     DI = 0508h
  829.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  830.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  831. Return: ???
  832.     STACK unchanged
  833. SeeAlso: INT 60/DI=0500h
  834. --------b-60----DI0509-----------------------
  835. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETPAT"
  836.     DI = 0509h
  837.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  838.         DWORD    pointer to ???
  839.         DWORD    pointer to ???
  840.         WORD    ???
  841.         WORD    ???
  842. Return: ???
  843.     STACK unchanged
  844. --------b-60----DI050A-----------------------
  845. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_MATCH"
  846.     DI = 050Ah
  847.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  848.         DWORD    pointer to ???
  849.         DWORD    pointer to ???
  850. Return: ???
  851.     STACK unchanged
  852.  
  853. Format of pattern match control block:
  854. Offset    Size    Description
  855.  00h 43 BYTEs    FindFirst data block (see INT 21/AH=4Eh)
  856.  2Bh 80 BYTEs    full path name
  857.  7Bh    BYTE    offset of last component of filename
  858.  7Ch    BYTE    DOS function number (4Eh or 4Fh)
  859. --------b-60----DI050B-----------------------
  860. INT 60 u - HP 95LX System Manager - IDENTIFY FILENAME REFERENT
  861.     DI = 050Bh
  862.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  863.         DWORD    pointer to ???
  864.         WORD    ???
  865.         WORD    ???
  866.         DWORD    pointer to ???
  867. Return: ???
  868.     STACK unchanged
  869.  
  870. Values returned:
  871.  0000h nonexistent
  872.  0001h file
  873.  0002h directory
  874.  0003h character device
  875. --------b-60----DI050C-----------------------
  876. INT 60 u - HP 95LX System Manager - DELETE FILE
  877.     DI = 050Ch "M_DELETE"
  878.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  879.         DWORD    pointer to ???
  880.         WORD    ???
  881.         WORD    ???
  882. Return: ???
  883.     STACK unchanged
  884. --------b-60----DI050D-----------------------
  885. INT 60 u - HP 95LX System Manager - RENAME FILE
  886.     DI = 050Dh
  887.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  888.         DWORD    pointer to ???
  889.         WORD    ???
  890.         WORD    ???
  891.         DWORD    pointer to ???
  892.         WORD    ???
  893.         WORD    ???
  894. Return: ???
  895.     STACK unchanged
  896. --------b-60----DI050E-----------------------
  897. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETDIR"
  898.     DI = 050Eh
  899.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  900.         WORD    ???
  901.         DWORD    pointer to ???
  902.         DWORD    pointer to ???
  903. Return: ???
  904.     STACK unchanged
  905. --------b-60----DI050F-----------------------
  906. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETDIR"
  907.     DI = 050Fh
  908.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  909.         DWORD    pointer to ???
  910.         WORD    ???
  911. Return: ???
  912.     STACK unchanged
  913. --------b-60----DI0510-----------------------
  914. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_VOLUME"
  915.     DI = 0510h
  916.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  917.         DWORD    pointer to ???
  918.         DWORD    pointer to ???
  919. Return: ???
  920.     STACK unchanged
  921. --------b-60----DI0511-----------------------
  922. INT 60 u - HP 95LX System Manager - MAKE A SUBDIRECTORY
  923.     DI = 0511h
  924.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  925.         DWORD    pointer to ???
  926.         WORD    ???
  927.         WORD    ???
  928. Return: ???
  929.     STACK unchanged
  930. --------b-60----DI0512-----------------------
  931. INT 60 u - HP 95LX System Manager - REMOVE A SUBDIRECTORY
  932.     DI = 0512h
  933.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  934.         DWORD    pointer to ???
  935.         WORD    ???
  936.         WORD    ???
  937. Return: ???
  938.     STACK unchanged
  939. --------b-60----DI0513-----------------------
  940. INT 60 u - HP 95LX System Manager - GET DEFAULT DRIVE
  941.     DI = 0513h
  942.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  943.         DWORD    pointer to ??? buffer for current drive
  944. Return: ???
  945.     STACK unchanged
  946. --------b-60----DI0514-----------------------
  947. INT 60 u - HP 95LX System Manager - SET DEFAULT DRIVE
  948.     DI = 0514h
  949.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  950.         WORD    new drive
  951. Return: ???
  952.     STACK unchanged
  953. --------b-60----DI0515-----------------------
  954. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_FDATE"
  955.     DI = 0515h
  956.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  957.         DWORD    pointer to ???
  958.         DWORD    pointer to ???
  959. Return: ???
  960.     STACK unchanged
  961. --------b-60----DI0516-----------------------
  962. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GET_SYSDIR"
  963.     DI = 0516h
  964.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  965.         DWORD    pointer to ???
  966. Return: ???
  967.     STACK unchanged
  968. --------b-60----DI0517-----------------------
  969. INT 60 u - HP 95LX System Manager - GET FILE ATTRIBUTES
  970.     DI = 0517h
  971.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  972.         DWORD    pointer to ???
  973.         WORD    ???
  974.         WORD    ???
  975.         DWORD    pointer to ??? buffer for file's attributes???
  976. Return: ???
  977.     STACK unchanged
  978. --------b-60----DI0518-----------------------
  979. INT 60 u - HP 95LX System Manager - SET FILE ATTRIBUTES
  980.     DI = 0518h
  981.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  982.         DWORD    pointer to ???
  983.         WORD    ???
  984.         WORD    ???
  985.         WORD    new attributes???
  986. Return: ???
  987.     STACK unchanged
  988. --------b-60----DI0519-----------------------
  989. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COMMON_OPEN"
  990.     DI = 0519h
  991.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  992.         DWORD    pointer to ???
  993.         DWORD    pointer to ???
  994.         WORD    ???
  995.         WORD    ???
  996.         WORD    ???
  997.         WORD    ???
  998.         WORD    ???
  999. Return: ???
  1000.     STACK unchanged
  1001. --------b-60----DI051A-----------------------
  1002. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COPYDT"
  1003.     DI = 051Ah
  1004.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1005.         DWORD    pointer to ???
  1006.         DWORD    pointer to ???
  1007. Return: ???
  1008.     STACK unchanged
  1009. --------b-60----DI051B-----------------------
  1010. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETFDT"
  1011.     DI = 051Bh
  1012.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1013.         DWORD    pointer to ???
  1014.         DWORD    pointer to ???
  1015. Return: ???
  1016.     STACK unchanged
  1017. --------b-60----DI051C-----------------------
  1018. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_PUTFDT"
  1019.     DI = 051Ch
  1020.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1021.         DWORD    pointer to ???
  1022.         WORD    ???
  1023. Return: ???
  1024.     STACK unchanged
  1025. --------b-60----DI0600-----------------------
  1026. INT 60 u - HP 95LX System Manager - PROCESS INITIALIZING
  1027.     DI = 0600h
  1028.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1029. Return: ???
  1030.     STACK unchanged
  1031. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0601h,INT 61"HP 95LX"
  1032. --------b-60----DI0601-----------------------
  1033. INT 60 u - HP 95LX System Manager - PROCESS TERMINATION
  1034.     DI = 0601h
  1035.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1036. Return: never
  1037.     STACK unchanged
  1038. SeeAlso: INT 21/AH=4Ch,INT 60/DI=0600h
  1039. --------b-60----DI0602-----------------------
  1040. INT 60 u - HP 95LX System Manager - "M_LOCK" - PREVENT TASK SWITCHES
  1041.     DI = 0602h
  1042.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1043. Return: ???
  1044.     STACK unchanged
  1045. SeeAlso: INT 15/AX=101Bh,INT 60/DI=0603h
  1046. --------b-60----DI0603-----------------------
  1047. INT 60 u - HP 95LX System Manager - "M_UNLOCK" - ALLOW TASK SWITCHES
  1048.     DI = 0603h
  1049.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1050. Return: ???
  1051.     STACK unchanged
  1052. SeeAlso: INT 15/AX=101Ch,INT 60/DI=0602h
  1053. --------b-60----DI0604-----------------------
  1054. INT 60 u - HP 95LX System Manager - "M_SPAWN"
  1055.     DI = 0604h
  1056.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1057.         DWORD    pointer to ???
  1058.         WORD    ???
  1059.         WORD    ???
  1060.         DWORD    pointer to ???
  1061. Return: ???
  1062.     STACK unchanged
  1063. --------b-60----DI0605-----------------------
  1064. INT 60 u - HP 95LX System Manager - "M_APPCOUNT"
  1065.     DI = 0605h
  1066.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1067. Return: ???
  1068.     STACK unchanged
  1069. --------b-60----DI0606-----------------------
  1070. INT 60 u - HP 95LX System Manager - "M_REBOOT"
  1071.     DI = 0606h
  1072.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1073. Return: ???
  1074.     STACK unchanged
  1075. --------b-60----DI0607-----------------------
  1076. INT 60 u - HP 95LX System Manager - "M_SPAWNARG"
  1077.     DI = 0607h
  1078.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1079.         DWORD    pointer to ???
  1080.         WORD    ???
  1081.         DWORD    pointer to ???
  1082.         WORD    ???
  1083. Return: ???
  1084.     STACK unchanged
  1085. --------b-60----DI0608-----------------------
  1086. INT 60 u - HP 95LX System Manager - "M_REG_APP_NAME"
  1087.     DI = 0608h
  1088.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1089.         DWORD    pointer to ???
  1090. Return: ???
  1091.     STACK unchanged
  1092. --------b-60----DI0609-----------------------
  1093. INT 60 u - HP 95LX System Manager - "M_APP_NAME"
  1094.     DI = 0609h
  1095.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1096.         DWORD    pointer to ???
  1097. Return: DX:AX -> ???
  1098.     STACK unchanged
  1099. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1100. --------b-60----DI0700-----------------------
  1101. INT 60 u - HP 95LX System Manager - OPEN CLIPBOARD
  1102.     DI = 0700h
  1103.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1104. Return: ???
  1105.     STACK unchanged
  1106. SeeAlso: INT 60/DI=0701h,INT 60/DI=0702h
  1107.  
  1108. Values for error code:
  1109.  0000h    successful
  1110.  FFF8h    transfer request out of bounds
  1111.  FFF9h    no such representation
  1112.  FFFAh    no representation open
  1113.  FFFBh    a representation is already open
  1114.  FFFCh    representation already exists
  1115.  FFFDh    heap allocation failure
  1116.  FFFEh    clipboard not open
  1117.  FFFFh    clipboard access denied
  1118. --------b-60----DI0701-----------------------
  1119. INT 60 u - HP 95LX System Manager - CLOSE CLIPBOARD
  1120.     DI = 0701h
  1121.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1122. Return: ???
  1123.     STACK unchanged
  1124. SeeAlso: INT 60/DI=0700h,INT 60/DI=0702h
  1125. --------b-60----DI0702-----------------------
  1126. INT 60 u - HP 95LX System Manager - RESET CLIPBOARD
  1127.     DI = 0702h
  1128.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1129.         DWORD    pointer to ???
  1130. Return: ???
  1131.     STACK unchanged
  1132. SeeAlso: INT 60/DI=0700h
  1133. --------b-60----DI0704-----------------------
  1134. INT 60 u - HP 95LX System Manager - "M_NEW_REP" - START A NEW REPRESENTATION???
  1135.     DI = 0704h
  1136.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1137.         DWORD    pointer to ???
  1138. Return: ???
  1139.     STACK unchanged
  1140. SeeAlso: INT 60/DI=0705h,INT 60/DI=0706h,INT 60/DI=0707h
  1141. --------b-60----DI0705-----------------------
  1142. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_FINI_REP"
  1143.     DI = 0705h
  1144.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1145. Return: ???
  1146.     STACK unchanged
  1147. SeeAlso: INT 60/DI=0704h
  1148. --------b-60----DI0706-----------------------
  1149. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_NAME"
  1150.     DI = 0706h
  1151.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1152.         WORD    ???
  1153.         DWORD    pointer to ???
  1154.         DWORD    pointer to ???
  1155. Return: ???
  1156.     STACK unchanged
  1157. SeeAlso: INT 60/DI=0704h,INT 60/DI=0707h
  1158. --------b-60----DI0707-----------------------
  1159. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_INDEX"
  1160.     DI = 0707h
  1161.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1162.         DWORD    pointer to ???
  1163.         DWORD    pointer to ???
  1164.         DWORD    pointer to ???
  1165. Return: ???
  1166.     STACK unchanged
  1167. SeeAlso: INT 60/DI=0704h,INT 60/DI=0706h
  1168. --------b-60----DI0708-----------------------
  1169. INT 60 u - HP 95LX System Manager - WRITE TO CLIPBOARD
  1170.     DI = 0708h
  1171.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1172.         DWORD    pointer to data to be written???
  1173.         WORD    length of data???
  1174. Return: ???
  1175.     STACK unchanged
  1176. SeeAlso: INT 60/DI=0709h
  1177. --------b-60----DI0709-----------------------
  1178. INT 60 u - HP 95LX System Manager - READ FROM CLIPBOARD
  1179.     DI = 0709h
  1180.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1181.         WORD    ???
  1182.         WORD    ???
  1183.         DWORD    pointer to buffer for data???
  1184.         WORD    length of buffer???
  1185. Return: ???
  1186.     STACK unchanged
  1187. SeeAlso: INT 60/DI=0708h
  1188. --------b-60----DI0800-----------------------
  1189. INT 60 u - HP 95LX System Manager - BEEP
  1190.     DI = 0800h
  1191.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1192. Return: ???
  1193.     STACK unchanged
  1194. SeeAlso: INT 60/DI=0801h,INT 60/DI=0802h,INT 60/DI=0803h
  1195. --------b-60----DI0801-----------------------
  1196. INT 60 u - HP 95LX System Manager - SOUND SERVICE "M_THUD"
  1197.     DI = 0801h
  1198.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1199. Return: ???
  1200.     STACK unchanged
  1201. SeeAlso: INT 60/DI=0800h,INT 60/DI=0802h,INT 60/DI=0803h
  1202. --------b-60----DI0802-----------------------
  1203. INT 60 u - HP 95LX System Manager - MAKE A SOUND PATTERN
  1204.     DI = 0802h
  1205.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1206.         WORD    pattern number (00h-06h)
  1207. Return: ???
  1208.     STACK unchanged
  1209. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0803h
  1210. --------b-60----DI0803-----------------------
  1211. INT 60 u - HP 95LX System Manager - TURN OFF SOUND
  1212.     DI = 0803h
  1213.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1214. Return: ???
  1215.     STACK unchanged
  1216. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0802h
  1217. --------b-60----DI0900-----------------------
  1218. INT 60 - HP 95LX System Manager - ALLOCATE REGULAR MEMORY BLOCK
  1219.     DI = 0900h
  1220.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1221.         WORD    size of block in bytes
  1222. Return: AX -> memory block
  1223.     STACK unchanged
  1224. Note:    System Manager-compliant applications are always small-model (64K code,
  1225.       64K data)
  1226. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0902h,INT 60/DI=0903h
  1227. --------b-60----DI0902-----------------------
  1228. INT 60 u - HP 95LX System Manager - FREE REGULAR MEMORY BLOCK
  1229.     DI = 0902h
  1230.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1231.         WORD    offset of memory block???
  1232. Return: ???
  1233.     STACK unchanged
  1234. Note:    System Manager-compliant applications are always small-model (64K code,
  1235.       64K data)
  1236. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  1237. --------b-60----DI0903-----------------------
  1238. INT 60 u - HP 95LX System Manager - ALLOCATE LARGE MEMORY BLOCK
  1239.     DI = 0903h
  1240.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1241.         WORD    size of block in bytes???
  1242. Return: AX -> memory block???
  1243.     STACK unchanged
  1244. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  1245. --------b-60----DI0904-----------------------
  1246. INT 60 u - HP 95LX System Manager - FREE LARGE MEMORY BLOCK
  1247.     DI = 0904h
  1248.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1249.         WORD    segment of memory block???
  1250. Return: AX -> ???
  1251.     STACK unchanged
  1252. SeeAlso: INT 60/DI=0902h,INT 60/DI=0903h
  1253. --------b-60----DI0B00-----------------------
  1254. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DTINFO"
  1255.     DI = 0B00h
  1256.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1257.         DWORD    pointer to ???
  1258. Return: ???
  1259.     STACK unchanged
  1260. --------b-60----DI0B01-----------------------
  1261. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GETDTM"
  1262.     DI = 0B01h
  1263.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1264.         DWORD    pointer to ???
  1265. Return: ???
  1266.     STACK unchanged
  1267. --------b-60----DI0B02-----------------------
  1268. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SETDTM"
  1269.     DI = 0B02h
  1270.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1271.         DWORD    pointer to ???
  1272. Return: ???
  1273.     STACK unchanged
  1274. --------b-60----DI0B03-----------------------
  1275. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_XALARM"
  1276.     DI = 0B03h
  1277.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1278.         WORD    ???
  1279. Return: ???
  1280.     STACK unchanged
  1281. --------b-60----DI0B04-----------------------
  1282. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_ALARM"
  1283.     DI = 0B04h
  1284.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1285.         DWORD    pointer to alarm record???
  1286.         WORD    ???
  1287. Return: ???
  1288.     STACK unchanged
  1289.  
  1290. Format of alarm record:
  1291. Offset    Size    Description
  1292.  00h    BYTE    hour
  1293.  01h    BYTE    minute
  1294.  02h    BYTE    second
  1295.  03h    BYTE    unused padding
  1296.  04h    WORD    rescheduling interval, in seconds
  1297.  06h    BYTE    are seconds significant?
  1298.  07h    BYTE    alarm sound
  1299.  08h 40 BYTEs    message displayed when alarm activates
  1300.  30h    BYTE    task ID of owner
  1301.  31h    BYTE    application's own use for sub-class
  1302.  32h  4 BYTEs    application's own use for private data
  1303. --------b-60----DI0B05-----------------------
  1304. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_SW"
  1305.     DI = 0B05h
  1306.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1307.         DWORD    pointer to ???
  1308. Return: ???
  1309.     STACK unchanged
  1310. --------b-60----DI0B06-----------------------
  1311. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SW"
  1312.     DI = 0B06h
  1313.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1314.         DWORD    pointer to ???
  1315.         DWORD    pointer to ???
  1316.         DWORD    pointer to ???
  1317. Return: ???
  1318.     STACK unchanged
  1319. --------b-60----DI0B07-----------------------
  1320. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_SW"
  1321.     DI = 0B07h
  1322.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1323.         DWORD    pointer to ???
  1324. Return: ???
  1325.     STACK unchanged
  1326. --------b-60----DI0B08-----------------------
  1327. INT 60 u - HP 95LX System Manager - "M_TELLTIME" - DISPLAY TIMESTAMP
  1328.     DI = 0B08h
  1329.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1330.         WORD    timestamp format (see below)
  1331.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  1332.         WORD    column
  1333. Return: ???
  1334.     STACK unchanged
  1335.  
  1336. Bitfields for timestamp format:
  1337.  bits 1-0  timestamp components
  1338.     00 date only
  1339.     01 time only
  1340.     10 date and time
  1341.     11 day and date
  1342.  bit 4    supply am/pm
  1343.  bit 5    supply seconds
  1344.  bit 6    show year
  1345.  bit 7    four-digit year
  1346. --------b-60----DI0B09-----------------------
  1347. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SETTINGS"
  1348.     DI = 0B09h
  1349.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1350.         DWORD    pointer to ???
  1351.         DWORD    pointer to ???
  1352. Return: ???
  1353.     STACK unchanged
  1354. SeeAlso: INT 60/DI=0B0Ah,INT 60/DI=0B0Fh
  1355.  
  1356. Format of system settings:
  1357. Offset    Size    Description
  1358.  00h    WORD    country code
  1359.  02h    WORD    speaker volume (00h-03h or FFh for off)
  1360.  04h    WORD    contrast level (00h-0Fh)
  1361.  06h    WORD    week start (00h Sunday, 01h Monday)
  1362.  08h    WORD    punctuation format
  1363.         code    decimal arg    thousands
  1364.         00h    .    ,    ,
  1365.         01h    ,    .    .
  1366.         02h    .    ;    ;
  1367.         03h    ,    ;    .
  1368.         04h    .    ,    " "
  1369.         05h    ,    .    " "
  1370.         06h    .    ;    " "
  1371.         07h    ,    ;    " "
  1372.  0Ah    WORD    two-character language code (only 5355h = "US" byte-swapped)
  1373.  0Ch    WORD    current date format (see below)
  1374.  0Eh    WORD    current time format (see below)
  1375.  10h    WORD    collating sequence
  1376.         00h numbers first, 01h letters first, 02h ASCII
  1377.  12h 80 BYTEs    name of picture file
  1378.  62h 30 BYTEs    name
  1379.  80h 30 BYTEs    title
  1380.  9Eh 28 BYTEs    company name
  1381.  BAh    WORD    number of languages
  1382.  BCh  6 BYTEs    available languages
  1383.  C2h 66 BYTEs    language menu
  1384. 104h  2 BYTEs    ASCIZ date separator
  1385. 106h  2 BYTEs    ASCIZ time separator
  1386. 108h    BYTE    date order
  1387. 109h    BYTE    use 24 hour time?
  1388. 10Ah 16 BYTEs    currency string
  1389. 11Ah    WORD    currency string position (00h prefix, 01h suffix)
  1390. 11Ch    WORD    keyboard (see below)
  1391. 11Eh    WORD    printer baud rate
  1392.         00h 300, 01h 1200, 02h 2400, 03h 4800, 04h 9600, 05h 19200
  1393. 120h    WORD    printer driver code
  1394.         00h Epson FX80, 01h HP Laserjet, 02h IBM ProPrinter
  1395. 122h    WORD    printer interface (00h COM1, 01h COM2, 02h IR, 03h LPT1)
  1396. 124h    WORD    system manager interrupt (60h by default)
  1397. 126h    WORD    code page (01h CP850, 02h CP437)
  1398. 128h    WORD    active exit key
  1399. 12Ah    WORD    active menu key
  1400. 12Ch    WORD    active CHAR key toggle
  1401. 12Eh  6 BYTEs    alarm
  1402.  
  1403. Values for current date format:
  1404.  00h    dd-mmm-yy
  1405.  01h    dd-mmm
  1406.  02h    mmm-yy
  1407.  03h    mm/dd/yy
  1408.  04h    dd/mm/yy
  1409.  05h    dd.mm.yy
  1410.  06h    yy-mm-dd
  1411.  07h    mm/dd
  1412.  08h    dd/mm
  1413.  09h    dd.mm
  1414.  0Ah    mm-dd
  1415.  
  1416. Values for current time format:
  1417.  00h    HH:MM:SS am/pm
  1418.  01h    HH:MM am/pm
  1419.  02h    HH:MM:SS
  1420.  03h    HH.MM.SS
  1421.  04h    HH,MM,SS
  1422.  05h    HHhMMmSSs
  1423.  06h    HH:MM
  1424.  07h    HH.MM
  1425.  08h    HH,MM
  1426.  09h    HHhMMm
  1427.  
  1428. Values for keyboard:
  1429.  0001h    Belgium
  1430.  0002h    French Canadian
  1431.  0004h    Denmark
  1432.  0008h    Finland
  1433.  0010h    French
  1434.  0020h    Finland
  1435.  0040h    Italy
  1436.  0080h    Netherlands
  1437.  0100h    Norway
  1438.  0200h    Portugal
  1439.  0400h    Spain
  1440.  0800h    Sweden
  1441.  1000h    Swiss French
  1442.  2000h    Swiss German
  1443.  4000h    United Kingdom
  1444.  8000h    USA
  1445. --------b-60----DI0B0A-----------------------
  1446. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SET_SETTINGS"
  1447.     DI = 0B0Ah
  1448.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1449.         DWORD    pointer to ???
  1450.         DWORD    pointer to ???
  1451. Return: ???
  1452.     STACK unchanged
  1453. SeeAlso: INT 60/DI=0B09h
  1454. --------b-60----DI0B0B-----------------------
  1455. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_TIMER"
  1456.     DI = 0B0Bh
  1457.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1458.         DWORD    pointer to ???
  1459. Return: ???
  1460.     STACK unchanged
  1461. SeeAlso: INT 60/DI=0B0Ch,INT 60/DI=0B0Dh
  1462. --------b-60----DI0B0C-----------------------
  1463. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_TIMER"
  1464.     DI = 0B0Ch
  1465.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1466.         DWORD    pointer to ???
  1467. Return: ???
  1468.     STACK unchanged
  1469. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Dh
  1470. --------b-60----DI0B0D-----------------------
  1471. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_TIMER"
  1472.     DI = 0B0Dh
  1473.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1474.         DWORD    pointer to ???
  1475.         DWORD    pointer to ???
  1476.         DWORD    pointer to ???
  1477. Return: ???
  1478.     STACK unchanged
  1479. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Ch
  1480. --------b-60----DI0B0E-----------------------
  1481. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_TELL_ANYTIME"
  1482.     DI = 0B0Eh
  1483.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1484.         WORD    ???
  1485.         WORD    ???
  1486.         WORD    ???
  1487.         DWORD    pointer to ???
  1488.         DWORD    pointer to ???
  1489. Return: DX:AX -> ???
  1490.     STACK unchanged
  1491. --------b-60----DI0B0F-----------------------
  1492. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVCE "M_GET_SETTINGS_ADDR"
  1493.     DI = 0B0Fh
  1494.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1495. Return: DX:AX -> system settings record (see INT 60/DI=0B09h)
  1496.     STACK unchanged
  1497. SeeAlso: INT 60/DI=0B09h
  1498. --------b-60----DI0B10-----------------------
  1499. INT 60 u - HP 95LX System Manager - PARSE DATE SPECIFICATION
  1500.     DI = 0B10h
  1501.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1502.         WORD    ???
  1503.         DWORD    pointer to ???
  1504.         DWORD    pointer to ???
  1505. Return: ???
  1506.     STACK unchanged
  1507. --------b-60----DI0B11-----------------------
  1508. INT 60 u - HP 95LX System Manager - PARSE TIME SPECIFICATION
  1509.     DI = 0B11h
  1510.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1511.         WORD    ???
  1512.         DWORD    pointer to ???
  1513.         DWORD    pointer to ???
  1514. Return: ???
  1515.     STACK unchanged
  1516. --------b-60----DI0B12-----------------------
  1517. INT 60 u - HP 95LX System Manager - SET DATE PARSING RULE
  1518.     DI = 0B12h
  1519.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1520.         WORD    new parsing rule (see below)
  1521. Return: ???
  1522.     STACK unchanged
  1523. SeeAlso: INT 60/DI=0B13h
  1524.  
  1525. Values for new parsing rule:
  1526.  01h    day-month-year
  1527.  02h    month-day-year
  1528.  03h    year-month-day
  1529.  04h    "DMYO"
  1530.  05h    "MDYO"
  1531.  OR with 08h to get any year
  1532. --------b-60----DI0B13-----------------------
  1533. INT 60 u - HP 95LX System Manager - SET TIME PARSING RULE
  1534.     DI = 0B13h
  1535.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1536.         WORD    new parsing rule (see below)
  1537. Return: ???
  1538.     STACK unchanged
  1539. SeeAlso: INT 60/DI=0B12h
  1540.  
  1541. Values for new parsing rule:
  1542.  01h    HH:MM:SS (am/pm)
  1543.  02h    HH:MM:SS (24hr)
  1544.  03h    HHMM:SS (24hr)
  1545.  04h    HH:MM:SS.hh (24hr)
  1546.  05h    HH:MM (am/pm)
  1547.  06h    HH:MM (24hr)
  1548.  07h    HHMM (24hr)
  1549. --------b-60----DI0B14-----------------------
  1550. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_POST_TIME"
  1551.     DI = 0B14h
  1552.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1553. Return: ???
  1554.     STACK unchanged
  1555. --------b-60----DI0B15-----------------------
  1556. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DAY_TRIGGER"
  1557.     DI = 0B15h
  1558.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1559.         WORD    ???
  1560. Return: ???
  1561.     STACK unchanged
  1562. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1563. --------b-60----DI0C00-----------------------
  1564. INT 60 u - HP 95LX System Manager - OPEN PRINTER
  1565.     DI = 0C00h
  1566.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1567. Return: ???
  1568.     STACK unchanged
  1569. SeeAlso: INT 60/DI=0C01h,INT 60/DI=0C02h,INT 60/DI=0C03h
  1570. --------b-60----DI0C01-----------------------
  1571. INT 60 u - HP 95LX System Manager - CLOSE PRINTER
  1572.     DI = 0C01h
  1573.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1574. Return: ???
  1575.     STACK unchanged
  1576. Note:    relinquishes control of printer
  1577. SeeAlso: INT 60/DI=0C00h
  1578. --------b-60----DI0C02-----------------------
  1579. INT 60 u - HP 95LX System Manager - WRITE TO PRINTER
  1580.     DI = 0C02h
  1581.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1582.         DWORD    pointer to data to be written
  1583.         WORD    length of data
  1584. Return: ???
  1585.     STACK unchanged
  1586. SeeAlso: INT 60/DI=0C00h
  1587. --------b-60----DI0C03-----------------------
  1588. INT 60 u - HP 95LX System Manager - INITIALIZE PRINTER
  1589.     DI = 0C03h
  1590.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1591. Return: ???
  1592.     STACK unchanged
  1593. SeeAlso: INT 60/DI=0C00h
  1594. --------b-60----DI0C04-----------------------
  1595. INT 60 u - HP 95LX System Manager - "M_TRANS_PRINTER"
  1596.     DI = 0C04h
  1597.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1598.         WORD    ???
  1599.         DWORD    pointer to ???
  1600. Return: ???
  1601.     STACK unchanged
  1602. --------b-60----DI0C05-----------------------
  1603. INT 60 u - HP 95LX System Manager - "M_FALL_PRINTER"
  1604.     DI = 0C05h
  1605.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1606.         WORD    ???
  1607.         DWORD    pointer to ???
  1608. Return: ???
  1609.     STACK unchanged
  1610. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1611. --------b-60----DI0E00-----------------------
  1612. INT 60 u - HP 95LX System Manager - COMMUNICATIONS SERVICE "M_COMM_INIT"
  1613.     DI = 0E00h
  1614.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1615.         DWORD    pointer to ???
  1616. Return: ???
  1617.     STACK unchanged
  1618. SeeAlso: INT 60/DI=0E01h,INT 60/DI=0E02h
  1619.  
  1620. Values for error code:
  1621.  0000h    successful
  1622.  FFF1h    "E_BUSY"
  1623.  FFF2h    timeout
  1624.  FFF3h    framing error
  1625.  FFF4h    parity error
  1626.  FFF5h    overrun error
  1627.  FFF6h    "E_EMPTY"
  1628.  FFF7h    "E_CONECT"
  1629.  FFF8h    not open
  1630.  FFF9h    out of memory
  1631.  FFFAh    buffer overflow
  1632.  FFFBh    "E_NOFIT"
  1633.  FFFCh    unsupported
  1634.  FFFDh    "E_IVOPR"
  1635.  FFFEh    "E_IVCHN"
  1636.  FFFFh    "E_REOPEN"
  1637. --------b-60----DI0E01-----------------------
  1638. INT 60 u - HP 95LX System Manager - OPEN COMMUNICATIONS CHANNEL
  1639.     DI = 0E01h
  1640.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1641.         DWORD    pointer to WORD buffer for comm channel handle
  1642.         WORD    communications line number (01h-04h)
  1643. Return: ???
  1644.     STACK unchanged
  1645. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E02h
  1646. --------b-60----DI0E02-----------------------
  1647. INT 60 u - HP 95LX System Manager - CLOSE COMMUNICATIONS CHANNEL
  1648.     DI = 0E02h
  1649.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1650.         WORD    comm channel handle
  1651. Return: ???
  1652.     STACK unchanged
  1653. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E01h
  1654. --------b-60----DI0E03-----------------------
  1655. INT 60 u - HP 95LX System Manager - "M_COMM_GETMDM"
  1656.     DI = 0E03h
  1657.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1658.         WORD    ???
  1659. Return: ???
  1660.     STACK unchanged
  1661. --------b-60----DI0E04-----------------------
  1662. INT 60 u - HP 95LX System Manager - "M_COMM_ANSWER"
  1663.     DI = 0E04h
  1664.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1665.         WORD    ???
  1666.         WORD    ???
  1667. Return: ???
  1668.     STACK unchanged
  1669. --------b-60----DI0E05-----------------------
  1670. INT 60 u - HP 95LX System Manager - "M_COMM_DIAL"
  1671.     DI = 0E05h
  1672.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1673.         WORD    ???
  1674.         DWORD    pointer to ???
  1675. Return: ???
  1676.     STACK unchanged
  1677. --------b-60----DI0E06-----------------------
  1678. INT 60 u - HP 95LX System Manager - RESET COMMUNICATIONS CHANNEL
  1679.     DI = 0E06h
  1680.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1681.         WORD    comm channel handle
  1682.         WORD    reset options (see below)
  1683. Return: ???
  1684.     STACK unchanged
  1685.  
  1686. Bitfields for reset options:
  1687.  bit 0    reset line
  1688.  bit 1    flush transmit buffer
  1689.  bit 2    flush receive buffer
  1690.  bit 3    reset modem
  1691.  bit 4    reset receiver's ^S state
  1692.  bit 5    reset transmitter's ^S state
  1693. --------b-60----DI0E07-----------------------
  1694. INT 60 u - HP 95LX System Manager - "M_COMM_HANGUP"
  1695.     DI = 0E07h
  1696.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1697.         WORD    ???
  1698. Return: ???
  1699.     STACK unchanged
  1700. --------b-60----DI0E08-----------------------
  1701. INT 60 u - HP 95LX System Manager - SEND DATA OVER COMM CHANNEL
  1702.     DI = 0E08h
  1703.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1704.         WORD    comm channel handle
  1705.         DWORD    pointer to data to be sent
  1706.         WORD    option flags
  1707.             bit 0: send partial buffer
  1708.             bit 1: turn on receiver after sending
  1709.         DWORD    pointer to WORD containing length of data to be sent
  1710. Return: length WORD updated to contain number of bytes actually sent???
  1711.     STACK unchanged
  1712. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  1713. --------b-60----DI0E09-----------------------
  1714. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL TRANSMIT QUEUE
  1715.     DI = 0E09h
  1716.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1717.         WORD    ???
  1718.         DWORD    pointer to ??? WORD
  1719.         DWORD    pointer to ??? WORD
  1720. Return: ???
  1721.     STACK unchanged
  1722. SeeAlso: INT 60/DI=0E0Ah
  1723. --------b-60----DI0E0A-----------------------
  1724. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL RECEIVE QUEUE
  1725.     DI = 0E0Ah
  1726.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1727.         WORD    comm channel handle
  1728.         DWORD    pointer to WORD to get receive buffer size
  1729.         DWORD    pointer to WORD to get free bytes in receive buffer
  1730. Return: ???
  1731.     STACK unchanged
  1732. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  1733. --------b-60----DI0E0B-----------------------
  1734. INT 60 u - HP 95LX System Manager - RECEIVE DATA FROM COMM CHANNEL
  1735.     DI = 0E0Bh
  1736.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1737.         WORD    comm channel handle
  1738.         DWORD    pointer to data buffer
  1739.         DWORD    pointer to WORD (input) length of data buffer
  1740.                     (output) number of bytes received
  1741. Return: ???
  1742.     STACK unchanged
  1743. SeeAlso: INT 60/DI=0E08h,INT 60/DI=0E0Ah
  1744. --------b-60----DI0E0C-----------------------
  1745. INT 60 u - HP 95LX System Manager - "M_COMM_HAZCMD"
  1746.     DI = 0E0Ch
  1747.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1748.         WORD    ???
  1749.         DWORD    pointer to ???
  1750.         WORD    ???
  1751. Return: ???
  1752.     STACK unchanged
  1753. --------b-60----DI0E0D-----------------------
  1754. INT 60 u - HP 95LX System Manager - "M_COMM_COMAND"
  1755.     DI = 0E0Dh
  1756.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1757.         WORD    ???
  1758.         DWORD    pointer to ???
  1759.         WORD    ???
  1760. Return: ???
  1761.     STACK unchanged
  1762. --------b-60----DI0E0E-----------------------
  1763. INT 60 u - HP 95LX System Manager - "M_COMM_BREAK"
  1764.     DI = 0E0Eh
  1765.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1766.         WORD    ???
  1767.         WORD    ???
  1768. Return: ???
  1769.     STACK unchanged
  1770. --------b-60----DI0E0F-----------------------
  1771. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXON"
  1772.     DI = 0E0Fh
  1773.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1774.         WORD    ???
  1775. Return: ???
  1776.     STACK unchanged
  1777. --------b-60----DI0E10-----------------------
  1778. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXOF"
  1779.     DI = 0E10h
  1780.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1781.         WORD    ???
  1782. Return: ???
  1783.     STACK unchanged
  1784. --------b-60----DI0E11-----------------------
  1785. INT 60 u - HP 95LX System Manager - "M_COMM_SETDTR"
  1786.     DI = 0E11h
  1787.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1788.         WORD    ???
  1789.         WORD    ???
  1790. Return: ???
  1791.     STACK unchanged
  1792. --------b-60----DI0E12-----------------------
  1793. INT 60 u - HP 95LX System Manager - "M_COMM_XMITNG"
  1794.     DI = 0E12h
  1795.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1796.         WORD    ???
  1797. Return: ???
  1798.     STACK unchanged
  1799. --------b-60----DI0E13-----------------------
  1800. INT 60 u - HP 95LX System Manager - "M_COMM_STATUS"
  1801.     DI = 0E13h
  1802.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1803.         WORD    ???
  1804. Return: ???
  1805.     STACK unchanged
  1806. --------b-60----DI0E14-----------------------
  1807. INT 60 u - HP 95LX System Manager - SET COMMUNICATIONS SETTINGS
  1808.     DI = 0E14h
  1809.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1810.         WORD    comm channel handle
  1811.         DWORD    pointer to comm settings (see below)
  1812. Return: ???
  1813.     STACK unchanged
  1814. SeeAlso: INT 60/DI=0E15h
  1815.  
  1816. Format of comm settings:
  1817. Offset    Size    Description
  1818.  00h    BYTE    dial type ('T' tone, 'P' pulse)
  1819.  01h    WORD    baud rate divisor (115200/baud_rate)
  1820.  03h    BYTE    parity (00h none, 08h odd, 18h even, 28h mark, 38h space)
  1821.  04h    BYTE    stop bits (00h one, 04h two)
  1822.  05h    BYTE    data bits - 5
  1823.  06h    BYTE    software handshake
  1824.         01h none, 02h XOFF/XON, 04h XOFF/any, 08h ENQ/ACK
  1825.  07h    BYTE    infrared (01h off, 02h on)
  1826.  08h    BYTE    duplex (01h half, 02h full)
  1827.  09h    BYTE    echo (01h echo, 02h no echo)
  1828. --------b-60----DI0E15-----------------------
  1829. INT 60 u - HP 95LX System Manager - GET COMMUNICATIONS SETTINGS
  1830.     DI = 0E15h
  1831.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1832.         WORD    ???
  1833.         DWORD    pointer to buffer for settings (see INT 60/DI=0E14h)
  1834. Return: ???
  1835.     STACK unchanged
  1836. SeeAlso: INT 60/DI=0E14h
  1837. --------b-60----DI0E16-----------------------
  1838. INT 60 u - HP 95LX System Manager - "M_COMM_CNFGUR"
  1839.     DI = 0E16h
  1840.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1841.         WORD    ???
  1842.         WORD    ???
  1843.         WORD    ???
  1844.         WORD    ???
  1845.         WORD    ???
  1846. Return: ???
  1847.     STACK unchanged
  1848. --------b-60----DI0E17-----------------------
  1849. INT 60 u - HP 95LX System Manager - "M_COMM_QRYERR"
  1850.     DI = 0E17h
  1851.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1852.         WORD    ???
  1853. Return: ???
  1854.     STACK unchanged
  1855. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1856. --------b-60----DI0F00-----------------------
  1857. INT 60 u - HP 95LX System Manager - "M_ERRMSG"
  1858.     DI = 0F00h
  1859.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1860.         WORD    ???
  1861.         DWORD    pointer to ???
  1862.         WORD    ???
  1863.         DWORD    pointer to ???
  1864. Return: ???
  1865.     STACK unchanged
  1866. --------b-60----DI0F01-----------------------
  1867. INT 60 u - HP 95LX System Manager - DRAW STANDARD TITLE BOX
  1868.     DI = 0F01h
  1869.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1870.         DWORD    pointer to ASCIZ title string
  1871. Return: ???
  1872.     STACK unchanged
  1873. --------b-60----DI0F02-----------------------
  1874. INT 60 u - HP 95LX System Manager - "SHOWNAME"
  1875.     DI = 0F02h
  1876.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1877.         DWORD    pointer to ???
  1878. Return: ???
  1879.     STACK unchanged
  1880. --------b-60----DI0F03-----------------------
  1881. INT 60 u - HP 95LX System Manager - DISPLAY TWO-LINE MESSAGE BOX
  1882.     DI = 0F03h
  1883.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1884.         DWORD    pointer to first line of message
  1885.         WORD    length of first line
  1886.         DWORD    pointer to second line of message
  1887.         WORD    length of second line
  1888. Return: ???
  1889.     STACK unchanged
  1890. SeeAlso: INT 60/DI=0300h,INT 60/DI=0F04h,INT 60/DI=0F09h
  1891. --------b-60----DI0F04-----------------------
  1892. INT 60 u - HP 95LX System Manager - REMOVE MESSAGE BOX
  1893.     DI = 0F04h
  1894.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1895. Return: ???
  1896.     STACK unchanged
  1897. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F09h
  1898. --------b-60----DI0F05-----------------------
  1899. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_ADDR"
  1900.     DI = 0F05h
  1901.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1902. Return: DX:AX -> ???
  1903.     STACK unchanged
  1904. --------b-60----DI0F06-----------------------
  1905. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_COUNT_ADDR"
  1906.     DI = 0F06h
  1907.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1908. Return: DX:AX -> ???
  1909.     STACK unchanged
  1910. --------b-60----DI0F07-----------------------
  1911. INT 60 u - HP 95LX System Manager - "M_SYS_RSRC_ADDR"
  1912.     DI = 0F07h
  1913.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1914. Return: DX:AX -> ???
  1915.     STACK unchanged
  1916. --------b-60----DI0F08-----------------------
  1917. INT 60 u - HP 95LX System Manager - "M_BIOS_OUTSTR"
  1918.     DI = 0F08h
  1919.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1920.         ???
  1921. Return: ???
  1922.     STACK unchanged
  1923. --------b-60----DI0F09-----------------------
  1924. INT 60 u - HP 95LX System Manager - DISPLAY THREE-LINE MESSAGE BOX
  1925.     DI = 0F09h
  1926.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1927.         DWORD    pointer to first line of message
  1928.         WORD    length of first line
  1929.         DWORD    pointer to second line of message
  1930.         WORD    length of second line
  1931.         DWORD    pointer to third line of message
  1932.         WORD    length of third line
  1933. Return: ???
  1934.     STACK unchanged
  1935. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F04h
  1936. --------b-60----DI0F0A-----------------------
  1937. INT 60 u - HP 95LX System Manager - DISABLE MACROS
  1938.     DI = 0F0Ah
  1939.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1940. Return: ???
  1941.     STACK unchanged
  1942. SeeAlso: INT 60/DI=0F0Bh
  1943. --------b-60----DI0F0B-----------------------
  1944. INT 60 u - HP 95LX System Manager - ENABLE MACROS
  1945.     DI = 0F0Bh
  1946.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1947. Return: ???
  1948.     STACK unchanged
  1949. SeeAlso: INT 60/DI=0F0Ah
  1950. --------b-60----DI0F0C-----------------------
  1951. INT 60 u - HP 95LX System Manager - "M_DATE_TIME_SEPS"
  1952.     DI = 0F0Ch
  1953.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1954.         ???
  1955. Return: ???
  1956.     STACK unchanged
  1957. --------b-60----DI0F0D-----------------------
  1958. INT 60 u - HP 95LX System Manager - "M_FORM_FT"
  1959.     DI = 0F0Dh
  1960.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1961.         DWORD    pointer to ???
  1962. Return: DX:AX -> ???
  1963.     STACK unchanged
  1964. --------b-60----DI0F0E-----------------------
  1965. INT 60 u - HP 95LX System Manager - "M_RAM_IV_INFO"
  1966.     DI = 0F0Eh
  1967.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1968.         DWORD    pointer to ???
  1969. Return: DX:AX -> ???
  1970.     STACK unchanged
  1971. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1972. --------b-60----DI1005-----------------------
  1973. INT 60 u - HP 95LX System Manager - "M_DIRTY_SYNC" - FORCE SCREEN UPDATE
  1974.     DI = 1005h
  1975.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1976. Return: ???
  1977.     STACK unchanged
  1978. SeeAlso: INT 10/AH=FFh,INT 60/DI=0300h,INT 60/DI=0301h
  1979. --------b-60----DI1200-----------------------
  1980. INT 60 u - HP 95LX System Manager - RESOURCE SERVICE "MAP_RESOURCE_FILE"
  1981.     DI = 1200h
  1982.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1983.         DWORD    pointer to ???
  1984. Return: ???
  1985.     STACK unchanged
  1986. --------b-60----DI1201-----------------------
  1987. INT 60 u - HP 95LX System Manager - "GET_RESOURCE_PTR"
  1988.     DI = 1201h
  1989.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1990.         WORD    ???
  1991. Return: DX:AX -> ???
  1992.     STACK unchanged
  1993. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1994. --------b-60----DI1202-----------------------
  1995. INT 60 u - HP 95LX System Manager - "GET_RSRC_TAB_PTR"
  1996.     DI = 1202h
  1997.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1998. Return: DX:AX -> ???
  1999.     STACK unchanged
  2000. --------b-60----DI1203-----------------------
  2001. INT 60 u - HP 95LX System Manager - "INIT_SYSGMR_RSRCS"
  2002.     DI = 1203h
  2003.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2004. Return: ???
  2005.     STACK unchanged
  2006. --------b-60----DI1300-----------------------
  2007. INT 60 u - HP 95LX System Manager - INITIALIZE HELP SYSTEM
  2008.     DI = 1300h
  2009.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2010.         DWORD    pointer to ???
  2011.         DWORD    pointer to ???
  2012.         WORD    ???
  2013. Return: ???
  2014.     STACK unchanged
  2015. --------b-60----DI1301-----------------------
  2016. INT 60 u - HP 95LX System Manager - DISPLAY HELP
  2017.     DI = 1301h
  2018.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2019.         DWORD    pointer to ???
  2020. Return: ???
  2021.     STACK unchanged
  2022. --------b-60----DI1302-----------------------
  2023. INT 60 u - HP 95LX System Manager - "M_HELP_KEY"
  2024.     DI = 1302h
  2025.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2026.         DWORD    pointer to ???
  2027.         WORD    ???
  2028. Return: ???
  2029.     STACK unchanged
  2030. --------b-60----DI1303-----------------------
  2031. INT 60 u - HP 95LX System Manager - "M_HELP_TERM"
  2032.     DI = 1303h
  2033.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2034.         DWORD    pointer to ???
  2035. Return: ???
  2036.     STACK unchanged
  2037. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2038. --------b-60----DI1400-----------------------
  2039. INT 60 u - HP 95LX System Manager - "M_ColInit"
  2040.     DI = 1400h
  2041.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2042. Return: AX = ???
  2043.     STACK unchanged
  2044. --------b-60----DI1401-----------------------
  2045. INT 60 u - HP 95LX System Manager - "M_ColCpStr"
  2046.     DI = 1401h
  2047.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2048.         DWORD    pointer to ???
  2049.         WORD    ???
  2050.         DWORD    pointer to ???
  2051.         WORD    ???
  2052. Return: ???
  2053.     STACK unchanged
  2054. --------b-60----DI1402-----------------------
  2055. INT 60 u - HP 95LX System Manager - "M_ColLicsStr"
  2056.     DI = 1402h
  2057.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2058.         ???
  2059. Return: ???
  2060.     STACK unchanged
  2061. --------b-60----DI1403-----------------------
  2062. INT 60 u - HP 95LX System Manager - "M_ColLicsChar"
  2063.     DI = 1403h
  2064.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2065.         ???
  2066. Return: ???
  2067.     STACK unchanged
  2068. --------b-60----DI1404-----------------------
  2069. INT 60 u - HP 95LX System Manager - "M_ColToLower"
  2070.     DI = 1404h
  2071.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2072.         DWORD    pointer to ???
  2073.         WORD    ???
  2074. Return: ???
  2075.     STACK unchanged
  2076. --------b-60----DI1405-----------------------
  2077. INT 60 u - HP 95LX System Manager - "M_ColCpSearch"
  2078.     DI = 1405h
  2079.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2080.         DWORD    pointer to ???
  2081.         WORD    ???
  2082.         DWORD    pointer to ???
  2083.         WORD    ???
  2084.         WORD    ???
  2085. Return: ???
  2086.     STACK unchanged
  2087. --------b-60----DI1406-----------------------
  2088. INT 60 u - HP 95LX System Manager - "M_ColToUpper"
  2089.     DI = 1406h
  2090.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2091.         DWORD    pointer to ???
  2092.         WORD    ???
  2093. Return: ???
  2094.     STACK unchanged
  2095. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2096. --------b-60----DI1500-----------------------
  2097. INT 60 u - HP 95LX System Manager - "GrDispInit"
  2098.     DI = 1500h
  2099.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2100.         ???
  2101. Return: ???
  2102.     STACK unchanged
  2103. --------b-60----DI1501-----------------------
  2104. INT 60 u - HP 95LX System Manager - "GrDispClear"
  2105.     DI = 1501h
  2106.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2107.         ???
  2108. Return: ???
  2109.     STACK unchanged
  2110. --------b-60----DI1502-----------------------
  2111. INT 60 u - HP 95LX System Manager - "GrDispDot"
  2112.     DI = 1502h
  2113.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2114.         ???
  2115. Return: ???
  2116.     STACK unchanged
  2117. --------b-60----DI1503-----------------------
  2118. INT 60 u - HP 95LX System Manager - "GrDispDraw"
  2119.     DI = 1503h
  2120.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2121.         ???
  2122. Return: ???
  2123.     STACK unchanged
  2124. --------b-60----DI1504-----------------------
  2125. INT 60 u - HP 95LX System Manager - "GrDispFill"
  2126.     DI = 1504h
  2127.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2128.         ???
  2129. Return: ???
  2130.     STACK unchanged
  2131. --------b-60----DI1505-----------------------
  2132. INT 60 u - HP 95LX System Manager - "GrDispRead"
  2133.     DI = 1505h
  2134.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2135.         ???
  2136. Return: ???
  2137.     STACK unchanged
  2138. --------b-60----DI1506-----------------------
  2139. INT 60 u - HP 95LX System Manager - "GrDispString"
  2140.     DI = 1506h
  2141.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2142.         ???
  2143. Return: ???
  2144.     STACK unchanged
  2145. --------b-60----DI1507-----------------------
  2146. INT 60 u - HP 95LX System Manager - "GrDispPan"
  2147.     DI = 1507h
  2148.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2149.         ???
  2150. Return: ???
  2151.     STACK unchanged
  2152. --------b-60----DI1508-----------------------
  2153. INT 60 u - HP 95LX System Manager - "GrDispZoom"
  2154.     DI = 1508h
  2155.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2156.         ???
  2157. Return: ???
  2158.     STACK unchanged
  2159. --------b-60----DI1509-----------------------
  2160. INT 60 u - HP 95LX System Manager - "GrDispSave"
  2161.     DI = 1509h
  2162.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2163.         ???
  2164. Return: ???
  2165.     STACK unchanged
  2166. --------b-60----DI150A-----------------------
  2167. INT 60 u - HP 95LX System Manager - "GrDispRestore"
  2168.     DI = 150Ah
  2169.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2170.         ???
  2171. Return: ???
  2172.     STACK unchanged
  2173. --------b-60----DI150B-----------------------
  2174. INT 60 u - HP 95LX System Manager - "GrDispCorner"
  2175.     DI = 150Bh
  2176.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2177.         ???
  2178. Return: ???
  2179.     STACK unchanged
  2180. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2181. --------b-60----DI1604-----------------------
  2182. INT 60 u - HP 95LX System Manager - "CP_TO_LICS"
  2183.     DI = 1604h
  2184.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2185.         ???
  2186. Return: ???
  2187.     STACK unchanged
  2188. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2189. --------G-6000-------------------------------
  2190. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  2191.     AH = 00h
  2192. Return: AX = 0000h    profiling is off
  2193.         otherwise profiling is on
  2194. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  2195. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  2196. --------G-6000-------------------------------
  2197. INT 60 - MDEBUG - GET STATUS
  2198.     AH = 00h
  2199.     DS:SI -> password or a null byte
  2200. Return: AX = return code
  2201.         FFFEh password is invalid
  2202.         FFFDh display mode is invalid
  2203.        else successful
  2204.         ES = value of the monitor register SE
  2205.         DI = value of the monitor register OF
  2206.         CH = monitor color
  2207.         CL = interpreter color
  2208.         BH = monitor start line
  2209.         BL = interpreter start line
  2210.         AH = makecode of the hotkey
  2211.         AL = ASCII code of the hotkey
  2212.         DL = status of special keys (only SHIFT, ALT, CTRL) for the
  2213.             hotkey (coded as for the keyboard flag at 0040h:0017h)
  2214.         DH = basic process number for the communication with drivers
  2215.             process number for the display driver, DH+1 = process
  2216.             number for the command driver(s)
  2217.     DS:SI -> MDEBUG identification table
  2218. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  2219.       Schemmer, including a memory monitor, an interpreter, and a
  2220.       disassembler
  2221. Notes:    MDEBUG uses INT 60 by default, but may be directed to any of INT 60
  2222.       through INT 67; the interrupt handler is preceded by the signature
  2223.       "USERINT" and is not chained
  2224.     if DS:SI points at a null byte, MDEBUG will prompt for a password if
  2225.       passwords are active; enough stack space must be provided for an
  2226.       INT 10h call (which MDEBUG uses while prompting for the password)
  2227. SeeAlso: AH=02h"MDEBUG"
  2228. Index:    hotkeys;MDEBUG
  2229.  
  2230. Format of MDEBUG identification table:
  2231. Offset    Size    Description
  2232.  -2    WORD    entry offset
  2233.  00h    WORD    CS of MDEBUG
  2234.  02h    DWORD    old INT 08h vector
  2235.  06h    DWORD    old INT 09h vector
  2236.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  2237.  0Eh    BYTE    length of version string
  2238.  0Fh  N BYTEs    version string
  2239. --------G-6001-------------------------------
  2240. INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
  2241.     AH = 01h
  2242.     DS:SI -> password or a null byte
  2243. Return: AX = return code
  2244.         FFFEh password is invalid
  2245.         FFFDh display mode is invalid
  2246.        else successful
  2247.         ES:DI point to the help registers of MDEBUG
  2248.            ES:DI-02h  -> R0 (WORD)
  2249.            ES:DI      -> R1 (WORD)
  2250.            ES:DI+02h  -> R2 (WORD)
  2251.            ES:DI+04h  -> R3 (WORD)
  2252.            ...
  2253.            ES:DI+0Eh  -> R8 (WORD)
  2254. --------G-6001-------------------------------
  2255. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  2256.     AH = 01h
  2257. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  2258. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  2259. --------N-6001FF-----------------------------
  2260. INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
  2261.     AX = 01FFh
  2262.     BX = handle returned by function 02h
  2263. Return: CF set on error
  2264.         DH = error code (see below)
  2265.     CF clear if successful
  2266.         BX = version
  2267.         CH = network interface class (see below)
  2268.         DX = interface type (see below)
  2269.         CL = number
  2270.         DS:SI -> name
  2271.         AL = driver functions supported
  2272.         01h basic
  2273.         02h basic and extended
  2274.         05h basic and high-performance
  2275.         06h basic, high-performance, and extended
  2276.         FFh not installed
  2277. Note:    the handle in BX is optional for drivers written to v1.07 or later of
  2278.       the packet driver specification
  2279.  
  2280. Values for error code:
  2281.  01h "BAD_HANDLE"    invalid handle number
  2282.  02h "NO_CLASS"        no interfaces of the specified class found
  2283.  03h "NO_TYPE"        no interfaces of the specified type found
  2284.  04h "NO_NUMBER"    no interfaces of the specified number found
  2285.  05h "BAD_TYPE"        bad packet type
  2286.  06h "NO_MULTICAST"    interface does not support multicast messages
  2287.  07h "CANT_TERMINATE"    this packet driver cannot terminate
  2288.  08h "BAD_MODE"        invalid receiver mode
  2289.  09h "NO_SPACE"        insufficient space
  2290.  0Ah "TYPE_INUSE"    type accessed but never released
  2291.  0Bh "BAD_COMMAND"    bad command
  2292.  0Ch "CANT_SEND"    packet could not be sent
  2293.  0Dh "CANT_SET"        hardware address could not be changed
  2294.  0Eh "BAD_ADDRESS"    hardware address has a bad length or format
  2295.  0Fh "CANT_RESET"    could not reset interface
  2296.  
  2297. Values for Network Interface classes/types:
  2298.     Class 01h  Ethernet/IEEE 802.3
  2299.     01h 3COM 3C500/3C501
  2300.     02h 3COM 3C505
  2301.     03h MICOM-Interlan NI5010
  2302.     04h BICC Data Networks 4110
  2303.     05h BICC Data Networks 4117
  2304.     06h MICOM-Interlan NP600
  2305.     08h Ungermann-Bass PC-NIC
  2306.     09h Univation NC-516
  2307.     0Ah TRW PC-2000
  2308.     0Bh MICOM-Interlan NI5210
  2309.     0Ch 3COM 3C503
  2310.     0Dh 3COM 3C523
  2311.     0Eh Western Digital WD8003
  2312.     0Fh Spider Systems S4
  2313.     10h Torus Frame Level
  2314.     11h 10Net Communications
  2315.     12h Gateway PC-bus
  2316.     13h Gateway AT-bus
  2317.     14h Gateway MCA-bus
  2318.     15h IMC PCnic
  2319.     16h IMC PCnic II
  2320.     17h IMC PCnic 8-bit
  2321.     18h Tigan Communications
  2322.     19h Micromatic Research
  2323.     1Ah Clarkson "Multiplexor"
  2324.     1Bh D-Link 8-bit
  2325.     1Ch D-Link 16-bit
  2326.     1Dh D-Link PS/2
  2327.     1Eh Research Machines 8
  2328.     1Fh Research Machines 16
  2329.     20h Research Machines MCA
  2330.     21h Radix Microsystems EXM1 16-bit
  2331.     22h Interlan Ni9210
  2332.     23h Interlan Ni6510
  2333.     24h Vestra LANMASTER 16-bit
  2334.     25h Vestra LANMASTER 8-bit
  2335.     26h Allied Telesis PC/XT/AT
  2336.     27h Allied Telesis NEC PC-98
  2337.     28h Allied Telesis Fujitsu FMR
  2338.     29h Ungermann-Bass NIC/PS2
  2339.     2Ah Tiara LANCard/E AT
  2340.     2Bh Tiara LANCard/E MC
  2341.     2Ch Tiara LANCard/E TP
  2342.     2Dh Spider Communications SpiderComm 8
  2343.     2Eh Spider Communications SpiderComm 16
  2344.     2Fh AT&T Starlan NAU
  2345.     30h AT&T Starlan-10 NAU
  2346.     31h AT&T Ethernet NAU
  2347.     32h Intel smart card
  2348.     33h Xircom Packet Adapter
  2349.     34h Aquila Ethernet
  2350.     35h Novell NE1000
  2351.     36h Novell NE2000
  2352.     37h SMC PC-510
  2353.     38h AT&T Fiber NAU
  2354.     39h NDIS to Packet Driver adapter
  2355.     3Ah Racal-InterLan ES3210
  2356.     3Bh General Systems ISDN simulated Ethernet
  2357.     3Ch Hewlett-Packard
  2358.     3Dh IMC EtherNic-8
  2359.     3Eh IMC EtherNic-16
  2360.     3Fh IMC EtherNic-MCA
  2361.     40h NetWorth EtherNext
  2362.     41h Dataco Scanet
  2363.     42h DEC DEPCA
  2364.     43h C-Net
  2365.     44h Gandalf LANLine
  2366.     45h Apricot built-in
  2367.     46h David Systems Ether-T
  2368.     47h ODI to Packet Driver adapter
  2369.     48h AMD Am21110-16
  2370.     49h Intel ICD Network controller family
  2371.     4Ah Intel ICD PCL2
  2372.     4Bh Intel ICD PCL2A
  2373.     4Ch AT&T LANPacer
  2374.     4Dh AT&T LANPacer+
  2375.     4Eh AT&T EVB
  2376.     4Fh AT&T StarStation
  2377.     50h SLIP simulated ethernet
  2378.     51h Racal-Interlan NIA310
  2379.     52h Racal-Interlan NISE
  2380.     53h Racal-Interlan NISE30
  2381.     54h Racal-Interlan NI6610
  2382.     55h Ethernet over IP/UDP
  2383.     56h ICL EtherTeam 16
  2384.     57h David Systems
  2385.     58h NCR WaveLAN
  2386.     59h Thomas Contrad TC5045
  2387.     5Ah Russ Nelson's Parallel Port driver
  2388.     5Bh Intell EtherExpress 16
  2389.     5Ch IBMTOKEN
  2390.     5Dh Zenith Z-Note
  2391.     5Eh 3Com 3C509
  2392.     5Fh Mylex LNE390
  2393.     60h Madge Smart Ringnode
  2394.     61h Novell NE2100
  2395.     62h Allied Telesis 1500
  2396.     63h Allied Telesis 1700
  2397.     64h Fujitsu EtherCoupler
  2398.     Class 02h  ProNET-10
  2399.     01h Proteon p1300
  2400.     02h Proteon p1800
  2401.     Class 03h  IEEE 802.5/ProNet-4 (without expanded RIFs)
  2402.     01h IBM Token-Ring Adapter
  2403.     02h Proteon p1340
  2404.     03h Proteon p1344
  2405.     04h Gateway PC-bus
  2406.     05h Gateway AT-bus
  2407.     06h Gateway MCA-bus
  2408.     07h Madge board
  2409.     39h NDIS to Packet Driver adapter
  2410.     47h ODI to Packet Driver adapter
  2411.     Class 04h  Omninet
  2412.     Class 05h  Appletalk
  2413.     01h ATALK.SYS adapter
  2414.     Class 06h  Serial Line
  2415.     01h Clarkson 8250-SLIP
  2416.     02h Clarkson "Multiplexor"
  2417.     03h Eicon Technologies
  2418.     Class 07h  StarLAN (subsumed by Ethernet class)
  2419.     Class 08h  ARCnet
  2420.     01h Datapoint RIM
  2421.     Class 09h  AX.25
  2422.     01h Ottawa PI card
  2423.     02h Eicon Technologies
  2424.     Class 0Ah  KISS
  2425.     Class 0Bh  IEEE 802.3 with 802.2 headers
  2426.     types same as for class 01h
  2427.     Class 0Ch  FDDI with 802.2 headers
  2428.     01h Western Digital
  2429.     02h Frontier Technology
  2430.     Class 0Dh  Internet X.25
  2431.     01h Western Digital
  2432.     02h Frontier Technology
  2433.     03h Emerging Technologies
  2434.     04h The Software Forge
  2435.     05h Link Data Intelligent X.25
  2436.     06h Eicon Technologies
  2437.     Class 0Eh  N.T. LANSTAR (encapsulating DIX Ethernet)
  2438.     01h NT LANSTAR/8
  2439.     02h NT LANSTAR/MC
  2440.     Class 0Fh  SLFP (MIT serial specification)
  2441.     01h MERIT
  2442.     Class 10h  PPP (Point-to-Point Protocol)
  2443.     01h 8250/16550 UART
  2444.     02h Niwot Networks synch
  2445.     03h Eicon Technologies
  2446.     Class 11h  802.5 with expanded RIFs
  2447.     types same as for class 3
  2448.     Class 12h  reserved for LCP/NCPs
  2449. Note: class and type numbers are cleared through FTP Software
  2450. --------G-6002-------------------------------
  2451. INT 60 - MDEBUG - SET STATUS
  2452.     AH = 02h
  2453.     DS:SI -> password or a null byte
  2454.     ES = new value for the register SE
  2455.     DI = new value for the register OF
  2456.     CH = new monitor color if nonzero
  2457.     CL = new interpreter color if nonzero
  2458.     BH = new monitor start line if nonzero
  2459.     BL = new interpreter start line if nonzero
  2460.     AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
  2461.     DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
  2462.         if nonzero
  2463.     DH = if nonzero, new basic process number for communication with the
  2464.         drivers (DH = multiplex number for the display driver,
  2465.         DH+1 = multiplex number for the command driver or drivers)
  2466. Return: AX = return code
  2467.         FFFFh call not allowed
  2468.         FFFEh password is invalid
  2469.         FFFDh display mode is invalid
  2470.         0000h successful, status changed
  2471.        else AL = error reasons (see below)
  2472. Note:    the values of the registers SE and OF are always changed, the other
  2473.       values are only changed if they are valid
  2474. SeeAlso: AH=00h"MDEBUG"
  2475. Index:    hotkeys;MDEBUG
  2476.  
  2477. Bitfields for error reasons:
  2478.  bit 0    invalid monitor start line
  2479.  bit 1    invalid interpreter start line
  2480.  bit 2    invalid hotkey
  2481.  bit 3    invalid process number
  2482.  bits 4-7 reserved
  2483. --------N-6002-------------------------------
  2484. INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
  2485.     AH = 02h
  2486.     AL = interface class
  2487.     BX = interface type
  2488.     DL = interface number
  2489.     DS:SI -> type
  2490.     CX = length of type (0000h for all packets)
  2491.     ES:DI -> receiver
  2492. Return: CF set on error
  2493.         DH = error code (see AX=01FFh)
  2494.     CF clear if successful
  2495.         AX = handle
  2496. SeeAlso: AH=03h"FTP"
  2497.  
  2498. Receiver is called with:
  2499.     AX = subfunction
  2500.         00h get packet buffer
  2501.         DX = lookahead length (v1.10+)
  2502.         DS:SI -> lookahead buffer if DX nonzero (v1.10+)
  2503.         DI = error flags (class dependent) (v1.10+)
  2504.         Return: ES:DI -> packet buffer
  2505.                 0000h:0000h means throw away packet
  2506.             CX = size of buffer (v1.10+), may be smaller than
  2507.                 incoming data
  2508.         01h copy completed
  2509.         DS:SI -> buffer
  2510.         CX = bytes actually copied (v1.10+)
  2511.     BX = handle
  2512.     CX = buffer length
  2513. when a packet is received
  2514. --------G-6002-------------------------------
  2515. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  2516.     AH = 02h
  2517. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  2518. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  2519. --------G-6003-------------------------------
  2520. INT 60 - MDEBUG - POP UP
  2521.     AH = 03h
  2522.     DS:SI -> password or a null byte
  2523.     ES -> new value for the register SE
  2524.     DI -> new value for the register OF
  2525. Return: AX = return code
  2526.         FFFFh call not allowed
  2527.         FFFEh password is invalid
  2528.         FFFDh display mode is invalid
  2529.        else successful
  2530. SeeAlso: AH=04h"MDEBUG"
  2531. --------N-6003-------------------------------
  2532. INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
  2533.     AH = 03h
  2534.     BX = handle
  2535. Return: CF set on error
  2536.        DH = error code (see AX=01FFh)
  2537.     CF clear if successful
  2538. SeeAlso: AH=02h"FTP"
  2539. --------G-6003-------------------------------
  2540. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  2541.     AH = 03h
  2542. Return: ES:BX -> profiling table
  2543. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  2544. SeeAlso: AH=04h"SYS_PROF"
  2545. --------N-6004-------------------------------
  2546. INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
  2547.     AH = 04h
  2548.     DS:SI -> buffer
  2549.     CX = length
  2550. Return: CF set on error
  2551.         DH = error code (see AX=01FFh)
  2552.     CF clear if successful
  2553. Note:    the buffer may be modified immediately upon return from this call
  2554. SeeAlso: AH=0Bh
  2555. --------G-6004-------------------------------
  2556. INT 60 - MDEBUG - POP UP
  2557.     AH = 04h
  2558.     DS:SI -> password or a null byte
  2559. Return: AX = return code
  2560.         FFFFh call not allowed
  2561.         FFFEh password is invalid
  2562.         FFFDh display mode is invalid
  2563.        else successful
  2564. SeeAlso: AH=03h"MDEBUG",AH=07h"MDEBUG"
  2565. --------G-6004-------------------------------
  2566. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  2567.     AH = 04h
  2568. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  2569. SeeAlso: AH=03h"SYS_PROF"
  2570. --------N-6005-------------------------------
  2571. INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
  2572.     AH = 05h
  2573.     BX = handle (optional for v1.10+)
  2574. Return: CF set on error
  2575.        DH = error code (see AX=01FFh)
  2576.     CF clear if successful
  2577. --------G-6005-------------------------------
  2578. INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
  2579.     AH = 05h
  2580.     DS:SI -> password or a null byte
  2581.     BL = new value for the semaphor of MDEBUG
  2582.          00h  enable popup of MDEBUG
  2583.          else disable popup of MDEBUG
  2584. Return: AX = return code
  2585.         FFFEh password is invalid
  2586.         FFFDh display mode is invalid
  2587.        else successful
  2588.         BL = old value of the semapor of MDEBUG
  2589.         BH = old value of the INT 08h semaphor
  2590.             (this semaphor is always reset after this function)
  2591. --------N-6006-------------------------------
  2592. INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
  2593.     AH = 06h
  2594.     BX = handle (optional for v1.10+)
  2595.     ES:DI -> buffer
  2596.     CX = length
  2597. Return: CF set on error
  2598.         DH = error code (see AX=01FFh)
  2599.     CF clear if successful
  2600.         CX = length
  2601. Note:    copies the local net address associated with the handle into the buffer
  2602. --------G-6006-------------------------------
  2603. INT 60 - MDEBUG - GET PASSWORD STATUS
  2604.     AH = 06h
  2605. Return: AL = status
  2606.         00h password inactive
  2607.         01h password active
  2608. --------N-6007-------------------------------
  2609. INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
  2610.     AH = 07h
  2611.     BX = handle (optional for v1.10+)
  2612. Return: CF set on error
  2613.         DH = error code (see AX=01FFh)
  2614.     CF clear if successful
  2615. --------G-6007-------------------------------
  2616. INT 60 - MDEBUG v1.70+ - GET ACTIVE PART OF MDEBUG
  2617.     AH = 07h
  2618. Return: AL = active part for the next popup session of MDEBUG:
  2619.         bit 0: the next popup session will start in the interpreter rather
  2620.             than in the monitor
  2621.         bit 1: the next popup session will sart in the online-help
  2622. SeeAlso: AH=03h"MDEBUG",AH=04h"MDEBUG"
  2623. --------G-6008-------------------------------
  2624. INT 60 - MDEBUG - UNUSED
  2625.     AH = 08h-FFh
  2626. Return: AX = FFFCh
  2627. --------N-600A-------------------------------
  2628. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
  2629.     AH = 0Ah
  2630. Return: CF set on error
  2631.         DH = error code (0Bh) (see AX=01FFh)
  2632.     CF clear if successful
  2633.         ES:DI -> parameter table (see below)
  2634.  
  2635. Format of parameter table:
  2636. Offset    Size    Description
  2637.  00h    BYTE    major revision of packet driver spec driver conforms to
  2638.  01h    BYTE    minor revision of packet driver spec
  2639.  02h    BYTE    length of this structure in bytes
  2640.  03h    BYTE    length of a MAC-layer address
  2641.  04h    WORD    maximum transfer unit, including MAC headers
  2642.  06h    WORD    buffer size for multicast addr
  2643.  08h    WORD    number of receive buffers (one less than back-to-back MTU rcvs)
  2644.  0Ah    WORD    number of transmit buffers
  2645.  0Ch    WORD    interrupt number to hook for post-EOI processing, 00h=none
  2646. --------N-600B-------------------------------
  2647. INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  2648.     AH = 0Bh
  2649.     DS:SI -> buffer
  2650.     CX = length of buffer
  2651.     ES:DI -> FAR function to call when buffer becomes available
  2652. Return: CF set on error
  2653.         DH = error code (0Bh,0Ch) (see AX=01FFh)
  2654.     CF clear if successful
  2655. Notes:    unlike function 04h, the buffer is not available for modification as
  2656.       soon as the call returns; the buffer may be queued by the driver and
  2657.       not processed until later
  2658.     this function has been dropped from v1.10+ of the specification and
  2659.       replaced by function 0Ch
  2660. SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
  2661.  
  2662. Completion function called with:
  2663.     AX = result
  2664.         00h copy OK
  2665.         nonzero error
  2666.     ES:DI -> buffer passed to INT 60/AH=0Bh call
  2667. --------N-600C-------------------------------
  2668. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  2669.     AH = 0Ch
  2670.     ES:DI -> pointer to IOCB
  2671. Return: CF set on error
  2672.         DH = error code (see AX=01FFh)
  2673.     CF clear if successful
  2674. SeeAlso: AH=04h"Packet Driver",AH=0Bh"Packet Driver"
  2675.  
  2676. Format of IOCB:
  2677. Offset    Size    Description
  2678.  00h    DWORD    pointer to buffer
  2679.  04h    WORD    length of buffer
  2680.  06h    BYTE    flags
  2681.         bit 0: packet driver is finished with IOCB
  2682.         bit 1: application requests upcall when driver completes
  2683.  07h    DWORD    function address for upcall
  2684.  0Bh  4 BYTEs    future gather write
  2685.  0Fh    BYTE    ???
  2686.  10h  8 BYTEs    private driver workspace
  2687.  
  2688. Completion function called with:
  2689.     ES:DI -> IOCB passed to INT 60/AH=0Ch
  2690. --------N-600C-------------------------------
  2691. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  2692.     AH = 0Ch
  2693. Return: AL = status
  2694.         00h successful
  2695.         ES:SI -> 6-byte station address
  2696.         02h semaphore service is unavailable
  2697. --------N-600D-------------------------------
  2698. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
  2699.     AH = 0Dh
  2700.     ES:DI -> IOCB
  2701. Return: CF set on error
  2702.         DH = error code (see AX=01FFh)
  2703.     CF clear if successful
  2704. SeeAlso: AH=0Ch"Packet Driver"
  2705. --------N-6011-------------------------------
  2706. INT 60 - 3com, 10NET, Banyan VINES - LOCK AND WAIT
  2707.     AH = 11h
  2708.     AL = drive number or 0
  2709.     DX = number of seconds to wait
  2710.     ES:SI = Ethernet address or 0
  2711.     DS:BX -> 31-byte ASCIZ semaphore name
  2712. Return: AL = status (see below)
  2713. SeeAlso: AH=12h,AH=13h
  2714.  
  2715. Values for status:
  2716.  00h    successful
  2717.  01h    timeout
  2718.  02h    server not responding
  2719.  03h    invalid semaphore name
  2720.  04h    semaphore list is full
  2721.  05h    invalid drive ID
  2722.  06h    invalid Ethernet address
  2723.  07h    not logged in
  2724.  08h    write to network failed
  2725.  09h    semaphore already logged for this CPU
  2726. --------N-6012-------------------------------
  2727. INT 60 - 3com, 10NET, Banyan VINES - LOCK
  2728.     AH = 12h
  2729.     AL = drive number or 00h
  2730.     ES:SI = Ethernet address or 0000h:0000h
  2731.     DS:BX -> 31-byte ASCIZ semaphore name
  2732. Return: AL = status (see also AH=11h)
  2733.         01h semaphore currently locked by another PC
  2734. Note:    unlike function 11h, this function returns immediately
  2735. SeeAlso: AH=11h,AH=13h
  2736. --------N-6013-------------------------------
  2737. INT 60 - 3com, 10NET, Banyan VINES - UNLOCK
  2738.     AH = 13h
  2739.     AL = drive number or 00h
  2740.     ES:SI = Ethernet address or 0000h:0000h
  2741.     DS:BX -> 31-byte ASCIZ semaphore name
  2742. Return: AL = status (see also AH=11h)
  2743.         01h semaphore not locked
  2744. SeeAlso: AH=11h,AH=12h
  2745. --------N-6014-------------------------------
  2746. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
  2747.     AH = 14h
  2748.     BX = handle (optional for v1.10+)
  2749.     CX = mode
  2750.         01h turn off receiver
  2751.         02h receive only packets sent to this interface
  2752.         03h mode 2 plus broadcast packets
  2753.         04h mode 3 plus limited multicast packets
  2754.         05h mode 3 plus all multicast packets
  2755.         06h all packets
  2756.         07h raw mode for serial line only (v1.10+)
  2757. Return: CF set on error
  2758.        DH = error code (01h,08h) (see AX=01FFh)
  2759.     CF clear if successful
  2760. SeeAlso: AH=15h
  2761. --------N-6015-------------------------------
  2762. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
  2763.     AH = 15h
  2764.     BX = handle (optional for v1.10+)
  2765. Return: CF set on error
  2766.         DH = error code (01h) (see AX=01FFh)
  2767.     CF clear if successful
  2768.         AX = mode
  2769. SeeAlso: AH=14h
  2770. --------N-6016-------------------------------
  2771. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
  2772.     AH = 16h
  2773.     ES:DI -> multicast list
  2774.     CX = length of list in bytes
  2775. Return: CF set on error
  2776.         DH = error code (06h,09h,0Eh) (see AX=01FFh)
  2777.     CF clear if successful
  2778. SeeAlso: AH=17h
  2779. --------N-6017-------------------------------
  2780. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
  2781.     AH = 17h
  2782. Return: CF set on error
  2783.         DH = error code (06h,09h) (see AX=01FFh)
  2784.     CF clear if successful
  2785.         ES:DI -> multicast addresses (do not modify)
  2786.         CX = bytes of multicast addresses currently in use
  2787. SeeAlso: AH=16h
  2788. --------N-6018-------------------------------
  2789. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
  2790.     AH = 18h
  2791.     BX = handle (optional for v1.10+)
  2792. Return: CF set on error
  2793.         DH = error code (01h) (see AX=01FFh)
  2794.     CF clear if successful
  2795.         DS:SI -> statistics (see below)
  2796.  
  2797. Format of statistics:
  2798. Offset    Size    Description
  2799.  00h    DWORD    packets in
  2800.  04h    DWORD    packets out
  2801.  08h    DWORD    bytes in
  2802.  0Ch    DWORD    bytes out
  2803.  10h    DWORD    errors in
  2804.  14h    DWORD    errors out
  2805.  18h    DWORD    packets dropped
  2806. --------N-6019-------------------------------
  2807. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
  2808.     AH = 19h
  2809.     ES:DI -> address
  2810.     CX = length of address
  2811. Return: CF set on error
  2812.         DH = error code (0Dh,0Eh) (see AX=01FFh)
  2813.     CF clear if successful
  2814.         CX = length
  2815. --------N-601A-------------------------------
  2816. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
  2817.     AH = 1Ah
  2818.     DS:SI -> buffer
  2819.     CX = length of buffer
  2820. Return: CF set on error
  2821.         DH = error code (see AX=01FFh)
  2822.     CF clear if successful
  2823. SeeAlso: AH=1Ch
  2824. --------N-601B-------------------------------
  2825. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
  2826.     AH = 1Bh
  2827. Return: CF set on error
  2828.         DH = error code (see AX=01FFh)
  2829.     CF clear if successful
  2830. SeeAlso: AH=1Ch
  2831. --------N-601C-------------------------------
  2832. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
  2833.     AH = 1Ch
  2834.     DS:SI -> buffer
  2835.     CX = length of buffer
  2836.     DX = timeout in clock ticks
  2837. Return: CF set on error
  2838.         DH = error code (see AX=01FFh)
  2839.     CF clear if successful
  2840.         CX = number of bytes transferred to buffer
  2841. SeeAlso: AH=1Ah,AH=1Bh
  2842. --------a-60AD-------------------------------
  2843. INT 60 - AccessDOS - API
  2844.     AH = ADh
  2845.     AL = function
  2846.         E1h ???
  2847.         Return: AX = ???
  2848.         E2h get configuration
  2849.         Return: BX:AX -> configuration data
  2850. Program: AccessDOS is a public domain TSR developed at The Trace Research and
  2851.       Development Center which provides extensions for keyboard, mouse,
  2852.       and sound access by the visually, hearing, or motor-control
  2853.       impaired.
  2854. Note:    INT 60 is the default vector; AccessDOS will use the first 0000h:0000h
  2855.       vector in the range 60h through 66h.
  2856. --------N-60E9-------------------------------
  2857. INT 60 - FTP Packet Driver - Crynwr Software - AUTOSELECT TRANSCEIVER
  2858.     AH = E9h
  2859.     ???
  2860. Return: ???
  2861. --------*-61---------------------------------
  2862. INT 61 - reserved for user interrupt
  2863. --------b-61---------------------------------
  2864. INT 61 - Atari Portfolio - EXTENDED BIOS
  2865.    provides subfunctions such as turning off the machine, accessing internal
  2866.    variables, and mapping memory cards
  2867. SeeAlso: INT 60"Atari"
  2868. --------b-61---------------------------------
  2869. INT 61 - HP 95LX System Manager - LOAD DS
  2870. SeeAlso: INT 0F"HP 95LX",INT 60"HP 95LX"
  2871. --------r-61---------------------------------
  2872. INT 61 - JPI TopSPEED Modula-2 v1 - PROCEDURE EXIT TRAP
  2873. SeeAlso: INT 61"JPI"
  2874. --------d-61---------------------------------
  2875. INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
  2876. Note:    this vector stores the second four bytes of the parameter table for
  2877.       hard disk 0
  2878. SeeAlso: INT 60"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
  2879. --------I-61---------------------------------
  2880. INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE
  2881.     BX:DX -> control block
  2882. SeeAlso: INT 67"Sangoma"
  2883. --------v-61---------------------------------
  2884. INT 61 - VIRUS - "SEMTEX"/"Screen Trasher" - INT 21h SUBSTITUTE
  2885. Note:    the virus copies the original INT 21h vector into INT 61h
  2886. SeeAlso: INT 21h,INT 60"VIRUS",INT 6B"VIRUS"
  2887. --------N-61---------------------------------
  2888. INT 61 - TCPOpen kernel - API
  2889.     ES:BX -> request packet (see below)
  2890. Program: TCPOpen is a TCP/IP protocol stack by Lanera
  2891. Note:    the interrupt number may be set to any value from 60h through 7Fh
  2892.       (default 61h) via the configuration file; there does not appear
  2893.       to be an installation check, though function FFFFh can be used to
  2894.       verify that the software is indeed functioning
  2895.  
  2896. Format of request packet:
  2897. Offset    Size    Description
  2898.  00h  8 BYTEs    ???
  2899.  08h    WORD    function number (0000h-001Ah or FFF9h-FFFFh)
  2900.  0Ah    WORD    ???
  2901.  0Ch  2 BYTEs    ???
  2902.  0Eh    WORD    (return) return code
  2903.  10h  2 BYTEs    ???
  2904.  12h    WORD    ???
  2905.  14h    WORD    (return) 0001h if requested function complete
  2906.  16h    WORD    (return) ???
  2907.  18h  6 BYTEs    ???
  2908.  1Eh    DWORD    -> ???
  2909.  22h    WORD    ??? or 0000h
  2910.  24h    WORD    (return) ???
  2911.  
  2912. Function FFFFh: installation verification
  2913.     Return: offset 10h = BEEFh
  2914.         offset 14h = 0001h
  2915.         offset 24h = ???
  2916. Index:    installation check;TCPOpen kernel
  2917. --------N-61---------------------------------
  2918. INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
  2919.     AH = system call number (see also entries below)
  2920.         01h "pkt_alloc" (v2.05; this is "net_config" in v2.1+)
  2921.         02h "pkt_free" (v2.05; this is "get_kernel_info" in v2.1+)
  2922. Return: CF clear if successful
  2923.     CF set on error
  2924.         AL = basic error (see below)
  2925.         AH = suberror number
  2926. Notes:    the installation check consists of testing for the signature "TCPTSR"
  2927.       three bytes beyond the start of the interrupt handler
  2928.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  2929.       interrupt from 20h through E0h
  2930. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  2931.       greater than 54h in AH may crash the system.    Other kernels may have
  2932.       this bug as well.
  2933. SeeAlso: INT 61/AH=00h"PC/TCP",INT 61/AH=2Ah,INT 61/AH=54h
  2934. Index:    installation check;PC/TCP
  2935.  
  2936. Values for error code:
  2937.  00h "NET_NOERR" successful
  2938.  01h "NET_ERR_INUSE" protocol or socket already in use
  2939.  02h "NET_DOS_ERR" MS-DOS error (returned as suberror code in AH)
  2940.  03h "NET_ERR_NOMEM" out of memory
  2941.  04h "NET_ERR_NOTNETCONN" not a network descriptor
  2942.  05h "NET_ERR_ILLEGALOP" invalid operation on given kind of network descriptor
  2943.  06h "NET_ERR_BADPKT" illegal or corrupted packet
  2944.  07h "NET_ERR_NOHOST" no host bound to specified connection
  2945.  08h "NET_ERR_CANTOPEN" unable to open file
  2946.  09h "NET_ERR_NET_UNREACHABLE" network is unreachable
  2947.  0Ah "NET_ERR_HOST_UNREACHABLE" host is unreachable (see subcodes below)
  2948.  0Bh "NET_ERR_PROT_UNREACHABLE" protocol is unreachable
  2949.  0Ch "NET_ERR_PORT_UNREACHABLE" port is unreachable
  2950.  0Dh "NET_ERR_TIMEOUT" operation timed out
  2951.  0Eh "NET_ERR_HOSTUNKNOWN" unable to resolve host name
  2952.  0Fh "NET_ERR_NOSERVERS" no name servers configured
  2953.  10h "NET_ERR_SERVER_ERR" bad reply from name server
  2954.     Subcodes: 0= no error, 1 = Host unreachable
  2955.  11h "NET_ERR_BADFORMAT" bad format for IP address or field in IP address struc
  2956.             is zero
  2957.  12h "NET_ERR_BADARG" invalid argument
  2958.  13h "NET_ERR_EOF" foreign host closed its end of connection
  2959.  14h "NET_ERR_RESET" connection has been reset
  2960.  15h "NET_ERR_WOULDBLOCK" recv() call was done on a non-blocking connection
  2961.             with no data available
  2962.  16h "NET_ERR_UNBOUND" insufficient resources to do operation
  2963.  17h "NET_ERR_NODESC" could not allocate network descriptor
  2964.  18h "NET_ERR_BADSYSCALL" invalid/unsupported kernel call
  2965.  19h "NET_ERR_CANTBROADCAST" unable to broadcast
  2966.  1Ah "NET_ERR_NOTESTAB" operation illegal because connection not established
  2967.  1Bh kernel busy, try again later
  2968.  1Ch "NET_ERR_ICMPMESG" an ICMP message was received (not on streams)
  2969.     (see subcodes below)
  2970. ---v2.1+---
  2971.  1Dh "NET_ERR_TERMINATING" internal kernel fatal error
  2972.  1Eh "NET_ERR_TAG_LOCKED" not allowed to set this tag (net_config)
  2973.  1Fh "NET_ERR_BAD_INTERFACE" non existent interface specified
  2974.  20h "NET_ERR_BADCONFIG" kernel cannot run - bad configuration
  2975.  21h "NET_ERR_EMM" expanded memory error
  2976.  22h "NET_ERR_CANT_SHUTDOWN" cant unload kernel (multitasker running)
  2977.  23h "NET_ERR_PARKED_IN" unable to unhook DOS interrupt
  2978.  24h "NET_ERR_NOQIOS" ran out of resources; try again later
  2979.  25h "NET_ERR_WOULD_TRUNCATE" datagram too large and "don't truncate" was set
  2980.  
  2981. Values for subcodes of error 0Ah "NET_ERR_HOST_UNREACHABLE":
  2982.  00h    no error
  2983.  01h    host unreachable
  2984.  02h    ARP failed
  2985.  03h    hardware failure
  2986.  04h    link failure
  2987.  05h    no route
  2988.  06h    gateway down
  2989.  
  2990. Values for subcodes of error 1Ch "NET_ERR_ICMPMESG":
  2991.  07h    unrecognised
  2992.  08h    can't fragment
  2993.  09h    srcr_fail
  2994.  0Ah    source quench
  2995.  0Bh    time exceeded
  2996.  0Ch    parameter problem
  2997.  0Dh    admin_prohib. see also code 0Ah
  2998. --------N-6100-------------------------------
  2999. INT 61 U - PC/TCP kernel v2.05+ - GET DEBUG INFORMATION
  3000.     AH = 00h
  3001.     DS:SI -> 216-byte buffer for network debugging information (see below)
  3002. Return: CF clear
  3003.     AX = 0000h
  3004.     buffer filled
  3005. Notes:    this call is not documented by FTP, Inc. for any version
  3006.     most of the information returned by this call is available via the
  3007.       documented get_kernel_info or net_info commands.
  3008.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  3009. SeeAlso: INT 61"PC/TCP",INT 61/AH=2Ah"PC/TCP"
  3010.  
  3011. Format of network debugging information:
  3012. Offset    Size    Description
  3013.  00h    DWORD    number of interrupts
  3014.  04h    DWORD    receive buffer low-water mark
  3015.  08h    DWORD    transmit buffer low-water mark
  3016.  0Ch    DWORD    number of packets received
  3017.  10h    DWORD    number of packets transmitted
  3018.  14h    DWORD    total receive errors
  3019.  18h    DWORD    total transmit errors
  3020.  1Ch  4 BYTEs    ???
  3021.  20h    DWORD    receive resets
  3022.  24h    DWORD    transmit resets
  3023.  28h    DWORD    number of "runts" received
  3024.  2Ch    DWORD    number of alignment errors on received packets
  3025.  30h    DWORD    number of CRC errors on received packets
  3026.  34h    DWORD    number of parity errors on received packets
  3027.  38h    DWORD    number of receive overflow errors
  3028.  3Ch    DWORD    number of oversized packets received
  3029.  40h    DWORD    number of packets lost due to lack of buffers
  3030.  44h    DWORD    receive timeouts
  3031.  48h 32 BYTEs    ???
  3032.  68h    DWORD    number of transmit collisions
  3033.  6Ch    DWORD    number of transmit timeouts
  3034.  70h    DWORD    number of transmit underflows
  3035.  74h    DWORD    number of lost "crs" on transmit
  3036.  78h    DWORD    number of times heartbeat failed on transmit
  3037.  7Ch 24 BYTEs    ???
  3038.  94h    WORD    free packet buffers
  3039.  96h    WORD    total packet buffers
  3040.  98h    WORD    minimum number of packet buffers free since kernel started
  3041.  9Ah 24 BYTEs    ???
  3042.  B2h    DWORD    pointer to TCP connection list???
  3043.  B6h    DWORD    pointer to IP routing table???
  3044.  BAh 30 BYTEs    ???
  3045. --------V-610000-----------------------------
  3046. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ZOOM DISPLAY
  3047.     AX = 0000h
  3048.     BX = zoom factor (0-7)
  3049. Desc:    zooms the display based on the given zoom factor
  3050. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  3051.       obtained by calling INT 16/AH=FFh
  3052.     not all vendors include the Tseng TSR which supports these functions
  3053. SeeAlso: AX=0001h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
  3054. SeeAlso: INT 16/AH=FFh"OPTIMA"
  3055. --------N-610001SF0001-----------------------
  3056. INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
  3057.     AX = 0001h subfn 0001h
  3058.     DS:DX -> communications control block (function 0001h)
  3059. Return: AX = status (see below)
  3060. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  3061.       interrupt handler is identified by the string "BANV" in the four
  3062.       bytes immediately preceding the interrupt handler
  3063. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0008h,INT 15/AX=DE2Eh
  3064.  
  3065. Values for status:
  3066.  0000h    successful
  3067.  0001h    service not installed
  3068.  0002h    invalid service ID
  3069.  0098h    resource already in use
  3070.  009Eh    address family does not exist
  3071.  009Fh    socket type does not exist
  3072.  00A0h    protocol does not exist
  3073.  00A1h    no more sockets available
  3074.  00A2h    no more buffer space available
  3075.  
  3076. Format of control block:
  3077. Offset    Size    Description
  3078.  00h    WORD    0001h
  3079.  02h    WORD    pointer to argument block
  3080.  04h    WORD    error return code
  3081.  06h  4 BYTEs    reserved
  3082.  
  3083. Format of argument block:
  3084. Offset    Size    Description
  3085.  00h    WORD    pointer to 2-byte buffer for socket identifier
  3086.  02h    WORD    address family
  3087.         0003h Banyan
  3088.  04h    WORD    socket type
  3089.         in address family 0003h
  3090.             0001h IPC socket
  3091.             0002h SPP socket
  3092.  06h    WORD    protocol number
  3093.         FFFFh default
  3094.  08h    WORD    pointer to 16-byte buffer for socket address
  3095.  0Ah    WORD    local port number
  3096.         0000h if service should assign transient port number
  3097.         0001h to 01FFh well-known port number (assigned by Banyan)
  3098.  
  3099. Format of IPC port:
  3100. Offset    Size    Description
  3101.  00h    WORD    address family (always 0003h for Banyan ports)
  3102.  04h  4 BYTEs    network number (server's serial number)
  3103.  06h    WORD    subnet number  (0001h = server, 8000h-FFFEh = PC)
  3104.  08h    WORD    port ID (0001h-01FFh for "well-known" ports)
  3105.  0Ah    BYTE    hop count
  3106.  0Bh  5 BYTEs    filler
  3107. --------N-610001SF0002-----------------------
  3108. INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
  3109.     AX = 0001h subfn 0002h
  3110.     DS:DX -> communications control block (function 0002h)
  3111. Return: AX = status (see below)
  3112. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  3113.       interrupt handler is identified by the string "BANV" in the four
  3114.       bytes immediately preceding the interrupt handler
  3115. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0005h
  3116.  
  3117. Values for status:
  3118.  0000h    successful
  3119.  0001h    service not installed
  3120.  0002h    invalid service ID
  3121.  0003h-000Ah reserved for BANV interface errors
  3122.  0097h    invalid socket identifier
  3123.  009Bh    destination node unreachable
  3124.  009Ch    message overflow
  3125.  009Dh    destination socket nonexistent
  3126.  00A2h    no more buffer space
  3127.  00A3h    timeout
  3128.  00B1h    resource disconnect
  3129.  
  3130. Format of control block:
  3131. Offset    Size    Description
  3132.  00h    WORD    0002h
  3133.  02h    WORD    pointer to argument block (see below)
  3134.  04h    WORD    error return code
  3135.         0000h successful
  3136.         0097h invalid socket ID
  3137.         00A2h no more buffer space
  3138.         00A3h timeout event
  3139.         00A5h resource not available
  3140.         00A6h internal communication failure
  3141.         00B1h resource disconnect
  3142.  06h  4 BYTEs    reserved
  3143.  
  3144. Format of argument block:
  3145. Offset    Size    Description
  3146.  00h    WORD    routine metric
  3147.  02h    WORD    error return code
  3148.  04h    WORD    socket identifier
  3149.  06h    WORD    pointer to send buffer
  3150.  08h    WORD    length of send buffer
  3151.  0Ah    WORD    flags
  3152.         bit 0: async request
  3153.         bit 1: reliable message
  3154.         bit 3: end of user message received
  3155.         bit 4: vectored request (if set, send buffer contains buffer
  3156.             descriptors)
  3157.         bit 5: connection-specific receive
  3158.         bit 6: change to connection-specific receive mode
  3159.  0Ch 16 BYTEs    socket address (see below)
  3160.  1Ch    WORD    timeout value in multiples of 200ms
  3161.  1Eh    WORD    connection identifier
  3162.  20h    WORD    type of request
  3163.         0001h send message
  3164.         0002h establish a virtual connection
  3165.         0003h terminate a virtual connection
  3166.  
  3167. Format of buffer descriptor:
  3168. Offset    Size    Description
  3169.  00h    WORD    data segment
  3170.  02h    WORD    buffer pointer
  3171.  04h    WORD    buffer length
  3172.  06h    WORD    character count
  3173.  
  3174. Format of socket address for unreliable datagrams:
  3175. Offset    Size    Description
  3176.  00h    WORD    0003h      address family
  3177.  02h    DWORD    FFFFFFFFh network number
  3178.  06h    WORD    FFFFh      subnet number
  3179.  08h    WORD          local port number
  3180.  0Ah    BYTE    00h-0Fh      hop count
  3181.  0Bh  5 BYTEs    0000h      filler
  3182. --------N-610001SF0003-----------------------
  3183. INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
  3184.     AX = 0001h subfn 0003h
  3185.     DS:DX -> communications control block (function 0003h)
  3186. Return: AX = status (00-0Ah,97h,A2h,A3h) (see AX=0001h/SF=0002h)
  3187. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  3188.       interrupt handler is identified by the string "BANV" in the four
  3189.       bytes immediately preceding the interrupt handler
  3190. SeeAlso: AX=0001h/SF=0002h
  3191.  
  3192. Format of control block:
  3193. Offset    Size    Description
  3194.  00h    WORD    0003h
  3195.  02h    WORD    pointer to argument block (see below)
  3196.  04h    WORD    error return code
  3197.         0000h successful
  3198.         0097h invalid socket ID
  3199.         00A2h no more buffer space
  3200.         00A3h timeout event
  3201.         00A5h resource not available
  3202.         00A6h internal communication failure
  3203.         00B1h resource disconnect
  3204.  06h  4 BYTEs    reserved
  3205.  
  3206. Format of argument block:
  3207. Offset    Size    Description
  3208.  00h    WORD    character count
  3209.  02h    WORD    error return code
  3210.  04h    WORD    socket identifier
  3211.  06h    WORD    pointer to receive buffer
  3212.  08h    WORD    length of receive buffer
  3213.  0Ah    WORD    flags
  3214.         bit 0: async request
  3215.         bit 2: flush receive buffer on overflow
  3216.         bit 3: end of user message received
  3217.         bit 4: vectored request (if set, receive buffer contains buffer
  3218.             descriptors)
  3219.         bit 5: connection-specific receive
  3220.         bit 6: change to connection-specific receive mode
  3221.  0Ch 16 BYTEs    socket address
  3222.  1Ch    WORD    timeout value in multiples of 200ms
  3223.  1Eh    WORD    connection identifier
  3224.  20h    WORD    type of response
  3225.         0001h message received
  3226.         0002h virtual connection established
  3227.         0003h virtual connection terminated
  3228.  
  3229. Format of buffer descriptor:
  3230. Offset    Size    Description
  3231.  00h    WORD    data segment
  3232.  02h    WORD    buffer pointer
  3233.  04h    WORD    buffer length
  3234.  06h    WORD    character count
  3235. --------N-610001SF0004-----------------------
  3236. INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
  3237.     AX = 0001h subfn 0004h
  3238.     DS:DX -> communications control block (function 0004h)
  3239. Return: AX = status (00h-0Ah,97h) (see AX=0001h/SF=0002h)
  3240. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  3241.       interrupt handler is identified by the string "BANV" in the four
  3242.       bytes immediately preceding the interrupt handler
  3243. SeeAlso: AX=0001h/SF=0001h,INT 15/AX=DE2Eh
  3244.  
  3245. Format of control block:
  3246. Offset    Size    Description
  3247.  00h    WORD    0004h
  3248.  02h    WORD    pointer to argument block (see below)
  3249.  04h    WORD    error return code
  3250.  06h  4 BYTEs    reserved
  3251.  
  3252. Format of argument block:
  3253. Offset    Size    Description
  3254.  00h    WORD    socket identifier
  3255. --------N-610001SF0005-----------------------
  3256. INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
  3257.     AX = 0001h subfn 0005h
  3258.     DS:DX -> communications control block (function 0005h)
  3259. Return: AX = status (see below)
  3260. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  3261.       interrupt handler is identified by the string "BANV" in the four
  3262.       bytes immediately preceding the interrupt handler
  3263.     returns results for all asynchronous operations invoked from the
  3264.       data segment used for this call
  3265. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0009h
  3266.  
  3267. Values for status:
  3268.  0000h    successful
  3269.  0001h    service not installed
  3270.  0002h    invalid service ID
  3271.  0003h-000Ah reserved for BANV interface errors
  3272.  00A2h    no more buffer space available
  3273.  00A3h    timeout event
  3274.  
  3275. Format of control block:
  3276. Offset    Size    Description
  3277.  00h    WORD    0005h
  3278.  02h    WORD    pointer to argument block (see below)
  3279.  04h    WORD    error return code
  3280.  06h  4 BYTEs    reserved
  3281.  
  3282. Format of argument block:
  3283. Offset    Size    Description
  3284.  00h    WORD    pointer to WORD event pointer
  3285.  02h    WORD    timeout in multiples of 200ms, FFFFh = infinite
  3286. --------N-610001SF0008-----------------------
  3287. INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
  3288.     AX = 0001h subfn 0008h
  3289.     DS:DX -> communications control block (function 0008h)
  3290. Return: AX = status
  3291.         0000h  successful
  3292.         00A2h  no more buffer space available
  3293. Note:    BANYAN can use any interrupt from 60h through 66h (default 61h).  The
  3294.       Banyan interrupt handler is identified by the string "BANV" in the
  3295.       four bytes immediately preceding the interrupt handler
  3296. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0009h
  3297.  
  3298. Format of control block:
  3299. Offset    Size    Description
  3300.  00h    WORD    0008h
  3301.  02h    WORD    process type
  3302.         0001h transient process
  3303.         0002h resident process
  3304.  04h    WORD    error return code
  3305.  06h  4 BYTEs    reserved
  3306. --------N-610001SF000B-----------------------
  3307. INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
  3308.     AX = 0001h subfn 000Bh
  3309.     DS:DX -> communications control block (function 000Bh)
  3310. Return: AX = status (00h-0Ah,A2h) (see AX=0001h/SF=0005h)
  3311. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  3312.       interrupt handler is identified by the string "BANV" in the four
  3313.       bytes immediately preceding the interrupt handler
  3314.     FAR user function is invoked with SS,DS, and ES set to segment of
  3315.       control block, and with the stack containing
  3316.         DWORD    return address
  3317.         WORD    argument pointer (sosend or sorec argument block)
  3318.         WORD    error return code
  3319.             0000h argument pointer is valid
  3320.             00A3h timeout
  3321. SeeAlso: AX=0001h/SF=0005h,AX=0001h/SF=0008h
  3322.  
  3323. Format of control block:
  3324. Offset    Size    Description
  3325.  00h    WORD    000Bh
  3326.  02h    WORD    pointer to argument block (see below)
  3327.  04h    WORD    error return code
  3328.  06h  2 BYTEs    reserved
  3329.  08h    WORD    user CS register
  3330.  
  3331. Format of argument block:
  3332. Offset    Size    Description
  3333.  00h    WORD    pointer to user interrupt function
  3334.  02h    WORD    pointer to user stack
  3335.  04h    WORD    initial timeout value in multiples of 200ms, FFFFh = infinite
  3336. --------V-610001-----------------------------
  3337. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - CENTER ZOOM WINDOW
  3338.     AX = 0001h
  3339.     BX = X coordinate to center
  3340.     CX = Y coordinate to center
  3341. Desc:    Positions the zoom window such that the specified window-relative
  3342.       coordinates appear as close as possible to the center of the
  3343.       display.  Useful for scrolling and panning.
  3344. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  3345.       obtained by calling INT 16/AH=FFh
  3346.     not all vendors include the Tseng TSR which supports these functions
  3347. SeeAlso: AX=0000h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
  3348. SeeAlso: INT 16/AH=FFh"OPTIMA"
  3349. --------I-610002-----------------------------
  3350. INT 61 - Banyan VINES - 3270 INTERFACE
  3351.     AX = 0002h
  3352.     BH = function
  3353.         00h "pi2reset"  reset 3270/SNA or 3270/BSC driver
  3354.         02h "pi2bsc" (3270/BSC only)
  3355.         03h "pi2get"    get information stored in 3270 resident driver
  3356.         04h "pi2put"    store information in 3270 resident driver
  3357.         05h "pi2gcur"   get current screen position
  3358.         07h "pi2sdat"   send data keystroke
  3359.         08h "pi2scom"   send command keystroke
  3360.         0Ah "pi2field"  get field info for arbitrary screen positions
  3361.         0Fh "pi2stat"   get logical unit/device status
  3362.         12h "pi2nlus"   determine logical unit/device assignment
  3363.         13h "pi2gate"   specifies comm port address to gateway service
  3364.         14h "pi2attach" attach a logical unit/device
  3365.         15h "pi2sdev"   save logical unit/device info in resident driver
  3366.                 (not supported in >3.0)
  3367.         16h "pi2gdev"   get device information (not supported in >3.0)
  3368.         17h "pi2luinfo" get info about specific logical unit/device
  3369.         18h "pi2gerr"   get finer error detail
  3370.         19h "pi2dhold"  (3270/SNA only)  holds a 3270 device
  3371.         1Ah "pi2shut"   release memory-resident module
  3372.         1Ch "pi2sprof"  save profile info in res driver (not supp in >3.0)
  3373.         1Dh "pi2gprof"  get prevsly stored profile info (not supp in >3.0)
  3374.     DS:CX -> argument block (except BH=00h,1Ah)
  3375. Return: AX = status (see below)
  3376. Notes:    Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
  3377.       which is loaded first.  The other interface will use AX=000Ah
  3378.     Status codes greater than 63h indicate an inconsistency in the 3270/SNA
  3379.       or 3270/BSC resident driver, which must be reloaded by the user
  3380.  
  3381. Values for status:
  3382.  0000h    successful
  3383.  000Bh    invalid parameter or data does not fit data area
  3384.  000Ch    another code path currently active in resident driver
  3385.  000Dh    operation currently not allowed
  3386.  0032h    encountered connection disconnect error
  3387.  0033h    encountered "sosend" completion error
  3388.  0034h    encountered "sosend" communication error
  3389.  0035h    attach request refused.    extended error info via "pi2gerr":
  3390.     01h resource unavailable
  3391.     02h invalid type
  3392.     03h version mismatch
  3393.     04h invalid logical unit number
  3394.     05h error during ARL processing
  3395.     06h no access for user
  3396.  0071h    encountered "sosock" error
  3397.  0072h    encountered unrecognizable error
  3398.  0073h    encountered "sowait" error (extended info via "pi2gerr")
  3399.  0074h    encountered invalid type-of-request on "sowait"
  3400.  0075h    encountered "sorec" error (extended info via "pi2gerr")
  3401.  0076h    encountered "sorec" completion error (ext info via "pi2gerr")
  3402.  0077h    encountered connection request
  3403.  0078h    encountered unrecognizable data
  3404.  0079h    encountered unknown connection ID (ext info via "pi2gerr")
  3405.  
  3406. Format of argument block for BH=03h,04h:
  3407. Offset    Size    Description
  3408.  00h    WORD    size of data area (max 256)
  3409.  02h  N BYTEs    data area
  3410.  
  3411. Format of argument block for BH=05h:
  3412. Offset    Size    Description
  3413.  00h    WORD    logical unit/device number
  3414.  02h    WORD    pointer to WORD buffer for cursor index
  3415.  04h    WORD    pointer to BYTE buffer for current field attribute
  3416.  
  3417. Format of argument block for BH=07h:
  3418. Offset    Size    Description
  3419.  00h    WORD    logical unit/device number
  3420.  02h    WORD    ASCII data byte
  3421.  04h    WORD    pointer to WORD count of characters which will need updating
  3422.  
  3423. Format of argument block for BH=08h:
  3424. Offset    Size    Description
  3425.  00h    WORD    logical unit/device number
  3426.  02h    WORD    keystroke
  3427.         0000h Enter
  3428.         0001h Clear
  3429.         0002h PA1
  3430.         0003h PA2
  3431.         0004h PA3
  3432.         0005h PF1
  3433.         ...
  3434.         001Ch PF24
  3435.         001Dh CSELECT (cursor select)
  3436.         001Eh Insert
  3437.         001Fh Delete
  3438.         0020h EOField
  3439.         0021h EINPUT (erase input)
  3440.         0022h Reset
  3441.         0023h Attention
  3442.         0024h SysReq
  3443.         0025h Duplicate
  3444.         0026h Fieldmark
  3445.         0027h Home
  3446.         0028h NextLine
  3447.         0029h Tab
  3448.         002Ah BackTab
  3449.         002Bh cursor up
  3450.         002Ch cursor down
  3451.         002Dh cursor right
  3452.         002Eh cursor left
  3453.         002Fh double cursor right
  3454.         0030h double cursor left
  3455.         0031h PRINT
  3456.         0032h CANCEL
  3457.         0033h Backspace
  3458.  
  3459. Format of argument block for BH=0Ah:
  3460. Offset    Size    Description
  3461.  00h    WORD    logical unit/device number
  3462.  02h    WORD    screen index
  3463.  04h    WORD    pointer to WORD buffer for field length
  3464.  06h    WORD    pointer to WORD buffer for offset in screen of field start
  3465.  
  3466. Format of argument block for BH=0Fh:
  3467. Offset    Size    Description
  3468.  00h    WORD    logical unit/device number
  3469.  02h    WORD    clear mask (clear these bits of status after returning status)
  3470.  04h    WORD    pointer to WORD buffer for device status (see below)
  3471.  
  3472. Bitfields for device status:
  3473.  bit 10 status modified
  3474.  bit 9    buffer modified
  3475.  bit 8    set cursor
  3476.  bit 5    sound alarm
  3477.  bits 1-0  size of print line for printer logical units
  3478.     00  unformatted line
  3479.     01  40-character line
  3480.     10  64-character line
  3481.     11  80-character line
  3482.  
  3483. Format of argument block for BH=12h:
  3484. Offset    Size    Description
  3485.  00h    WORD    pointer to WORD buffer for number of logical units or devices
  3486.  02h    WORD    pointer to WORD buffer for version number
  3487.  04h    WORD    pointer to 64-byte buffer for logical unit/device list
  3488.  
  3489. Format of argument block for BH=13h:
  3490. Offset    Size    Description
  3491.  00h 16 BYTEs    communications port address (see AX=0001h#"Sosock")
  3492.  
  3493. Format of argument block for BH=14h:
  3494. Offset    Size    Description
  3495.  00h    WORD    logical unit/device number
  3496.         0000h attach any free device of the specified type
  3497.  02h    WORD    logical unit/device type
  3498.         (3270/SNA) 01h, 02h, or 03h
  3499.         (3270/BSC) 02h display
  3500.         (3270/BSC) 03h printer
  3501.  04h    WORD    pointer to WORD buffer for attached logical unit/device number
  3502.  
  3503. Format of argument block for BH=16h:
  3504. Offset    Size    Description
  3505.  00h    WORD    pointer to 18-byte buffer for device block (see below)
  3506.         first WORD must be set to desired logical unit/device number
  3507.  
  3508. Format of argument block for BH=17h:
  3509. Offset    Size    Description
  3510.  00h    WORD    logical unit/device number
  3511.  02h    WORD    pointer to information block in caller's DS (see below)
  3512.  
  3513. Format of argument block for BH=18h:
  3514. Offset    Size    Description
  3515.  00h    WORD    pointer to WORD buffer for major error code
  3516.  02h    WORD    pointer to WORD buffer for minor error code
  3517.  
  3518. Format of argument block for BH=19h:
  3519. Offset    Size    Description
  3520.  00h    WORD    logical unit/device number
  3521.  
  3522. Format of argument block for BH=1Ch,1Dh:
  3523. Offset    Size    Description
  3524.  00h    WORD    pointer to profile block in caller's DS (see below)
  3525.  
  3526. Format of device block, argument block for BH=15h:
  3527. Offset    Size    Description
  3528.  00h    WORD    logical unit/device number
  3529.  02h    WORD    logical unit/device type
  3530.  04h    WORD    display model number
  3531.  06h    WORD    numeric checking
  3532.  08h    WORD    status line
  3533.  0Ah    BYTE    unprotected normal field attribute
  3534.  0Bh    BYTE    unprotected intensified field attribute
  3535.  0Ch    BYTE    protected normal field attribute
  3536.  0Dh    BYTE    protected intensified field attribute
  3537.  0Eh    WORD    reserved
  3538.  10h    WORD    printer port number
  3539.  
  3540. Format of information block:
  3541. Offset    Size    Description
  3542.  00h    WORD    device model number
  3543.  02h    DWORD    screen buffer pointer
  3544.  06h    DWORD    status line pointer (see below)
  3545.  0Ah    DWORD    reserved
  3546.  
  3547. Format of status line:
  3548. Offset    Size    Description
  3549.  00h    BYTE    comm line status
  3550.         00h inactive
  3551.         01h active
  3552.  01h    BYTE    activation level
  3553.         01h physical unit activated
  3554.         02h logical unit also activated
  3555.         03h session is bound
  3556.  02h    BYTE    data traffic state
  3557.         00h inactive
  3558.         01h active
  3559.  03h    BYTE    screen ownership
  3560.         00h SLU->PLU sessoin owns screen
  3561.         01h SLU->SSCP session owns screen
  3562.  04h    BYTE    keyboard status (see below)
  3563.  05h    BYTE    insert mode
  3564.         01h if in insert mode
  3565.  06h    BYTE    numeric
  3566.         01h if current screen buffer is numeric only
  3567.  07h    BYTE    printer status
  3568.         00h printer not assigned
  3569.         01h printer is inactive
  3570.         02h printer error
  3571.         03h currently printing
  3572.         04h printer is busy
  3573.         05h printer is very busy
  3574.  08h    BYTE    printer assignment
  3575.  09h    BYTE    maximum size of network name
  3576.  0Ah  N BYTEs    ASCIZ network name
  3577.     BYTE    maximum size of message window
  3578.       M BYTEs    null-terminated message window
  3579.     BYTE    code set
  3580.         00h EBCDIC
  3581.         01h ASCII
  3582.       M BYTEs    extended attributes
  3583.         01h extended attributes are in effect (stored at screen+1920)
  3584.             each extended attribute specifies
  3585.             bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
  3586.             bits 2-4: 000=default,001=blue,010=red,011=pink,
  3587.                   100=green,101=turquoise,110=yellow,111=white
  3588.     BYTE    extended color
  3589.         01h other than base color is in effect
  3590.  
  3591. Values for keyboard status:
  3592.  00h    UNLOCK - ready to accept data
  3593.  01h    TIME - aid was struck
  3594.  02h    SYSTEM - received response no restore
  3595.  03h    FUNCTION - unavailable keyboard function
  3596.  04h    INPUT - not currently used
  3597.  05h    ENDFIELD - field filled in insert mode
  3598.  06h    PROTECTED - attempt to enter in protected field
  3599.  07h    NUMERIC - attempt to enter in numeric field
  3600.  08h    PROGRAM - error in outbound data stream
  3601.  
  3602. Format of profile block:
  3603. Offset    Size    Description
  3604.  00h 64 BYTEs    gateway service name
  3605.  40h 16 BYTEs    gateway comm port address
  3606.  50h    WORD    primary logical unit number
  3607.  52h    WORD    secondary logical unit type
  3608.  54h    WORD    secondary logical unit number
  3609.  56h    WORD    printer assignment
  3610.  58h 50 BYTEs    keyboard definitions filename
  3611. --------V-610002-----------------------------
  3612. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - END ZOOM
  3613.     AX = 0002h
  3614. Desc:    switches off zoom and returns window to its original state
  3615. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  3616.       obtained by calling INT 16/AH=FFh
  3617.     not all vendors include the Tseng TSR which supports these functions
  3618. SeeAlso: AX=0000h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  3619. --------N-610003SF00-------------------------
  3620. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INIT USER BUFFER PTR INFO
  3621.     AX = 0003h subfn 00h
  3622.     DS:BX -> argument block (see below)
  3623. Return: AX = status (see below)
  3624. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=08h,AX=0003h/SF=0Dh
  3625.  
  3626. Values for status:
  3627.  0000h    successful
  3628.  000Bh    invalid session ID
  3629.  000Ch    session not active
  3630.  000Dh    invalid request type
  3631.  000Eh    invalid parameters
  3632.  000Fh    out of heap space
  3633.  0010h    timeout on send
  3634.  0011h    Banyan communications error
  3635.  0012h    session not waiting for host
  3636.  0013h    session is active
  3637.  0014h    duplicate suspend session request
  3638.  0015h    no session suspended
  3639.  0016h    ring data buffer full
  3640.  0017h    printer error encountered
  3641.  0018h    Banyan communications error
  3642.  0019h    unable to make connection
  3643.  001Ah    no ring buffer specified at startup
  3644.  001Bh    service is down
  3645.  001Ch    invalid service name
  3646.  001Dh    service is closed
  3647.  001Eh    invalid connection name
  3648.  001Fh    max session limit reached for service
  3649.  0020h    access rights list for connection/dialout does not include this user
  3650.  0021h    service not responding
  3651.  0022h    missing telephone number
  3652.  
  3653. Format of argument block:
  3654. Offset    Size    Description
  3655.  00h    BYTE    session ID (00h)
  3656.  01h    BYTE    00h (func "initialize user buffer pointer information area")
  3657.  02h    WORD    -> user buffer ptr info area in caller's current DS (see below)
  3658.  
  3659. Format of user buffer ptr info area:
  3660. Offset    Size    Description
  3661.  00h    WORD    flags
  3662.         0000h don't read interface's data buffer
  3663.         0001h read data buffer
  3664.  02h    DWORD    pointer to ring buffer
  3665.  06h    WORD    length of ring buffer
  3666.  08h    WORD    ring buffer offset to last byte read by caller
  3667.  0Ah    DWORD    pointer to WORD containing offset of last byte
  3668.           in ring buffer filled
  3669.  0Eh    DWORD    pointer to screen buffer
  3670.  12h    DWORD    pointer to field containing cursor position
  3671.  16h    DWORD    pointer to terminal status area (see below)
  3672.  
  3673. Format of terminal status area:
  3674. Offset    Size    Description
  3675.  00h    BYTE    status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
  3676.  01h    BYTE    terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
  3677.  02h    BYTE    current keypad mode (VT100,VT52 only)
  3678.         4Eh ("N") numeric mode
  3679.         41h ("A") application mode
  3680.  03h  4 BYTEs    current state of LEDs (VT100 only)
  3681.         00h off
  3682.         01h on
  3683.  07h    WORD    line error count
  3684.  09h    WORD    primary error code (see below)
  3685.  0Bh    WORD    secondary error code
  3686.  
  3687. Values for primary error code:
  3688.  0000h    no error
  3689.  0001h    unable to make connection
  3690.  0002h    communications error, restart session
  3691.  0003h    async terminal emulation service unavailable
  3692.  0004h    lost carrier
  3693.  0005h    all matching lines busy
  3694.  0006h    no lines defined for connection name
  3695.  0007h    no dial lines available on server
  3696.  0008h    no matching dial lines available
  3697.  0009h    out of heap space
  3698.  000Ah    service error encountered
  3699.  000Bh    timed out waiting to connect
  3700.  000Ch    communications error
  3701.  000Dh    communications error
  3702.  000Eh    host wants file transferred to/from PC
  3703.  000Fh    host software changed session parameter
  3704.  0010h    host software changed tap settings
  3705.  0011h    host software changed LED indicator
  3706.  0012h    host software changed display background (secondary error code 00h for
  3707.       white on black, 01h for black on white)
  3708.  0013h    host software changed display option (secondary error code 00h for off,
  3709.       01h for on)
  3710.  0014h    communications error
  3711.  0015h    communications error
  3712.  0016h    unable to make connection
  3713.  0017h    unable to make connection
  3714. --------N-610003SF01-------------------------
  3715. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SEND TO HOST
  3716.     AX = 0003h subfn 01h
  3717.     DS:BX -> argument block (see below)
  3718. Return: AX = status (see AX=0003h/SF=00h)
  3719. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=02h,AX=0003h/SF=14h
  3720.  
  3721. Format of argument block:
  3722. Offset    Size    Description
  3723.  00h    BYTE    session ID (00h)
  3724.  01h    BYTE    01h (function "send to host")
  3725.  02h    BYTE    type
  3726.         00h ASCII byte
  3727.         01h ASCII string
  3728.         02h terminal function code
  3729.         03h up arrow
  3730.         04h down arrow
  3731.         05h left arrow
  3732.         06h right arrow
  3733.         07h break
  3734.  03h  N BYTEs    type-specific info (see below)
  3735.  
  3736. Format of type-specific info:
  3737. Offset    Size    Description
  3738. ---ASCII byte---
  3739.  03h    BYTE    byte to send to host
  3740. ---ASCII string---
  3741.  03h    WORD    length of string
  3742.  05h    WORD    pointer to string
  3743. ---terminal function code (VT52/VT100)---
  3744.  03h    BYTE    function code
  3745.         00h keypad 0
  3746.         01h keypad 1
  3747.         ...
  3748.         09h keypad 9
  3749.         0Ah keypad -
  3750.         0Bh keypad ,
  3751.         0Ch keypad .
  3752.         0Dh keypad ENTER
  3753.         0Eh PF1
  3754.         0Fh PF2
  3755.         10h PF3
  3756.         11h PF4
  3757. ---terminal function code (IBM3101)---
  3758.  03h    BYTE    function code
  3759.         00h PF1
  3760.         ...
  3761.         07h PF8
  3762.         08h Home
  3763. --------N-610003SF02-------------------------
  3764. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "CONTROL MONITOR"
  3765.     AX = 0003h subfn 02h
  3766.     DS:BX -> argument block (see below)
  3767. Return: AX = status (see AX=0003h/SF=00h)
  3768. SeeAlso: AX=0003h/SF=03h,AX=0003h/SF=05h
  3769.  
  3770. Format of argument block:
  3771. Offset    Size    Description
  3772.  00h    BYTE    session ID (00h)
  3773.  01h    BYTE    02h (function "control monitor")
  3774.  02h    BYTE    display flag
  3775.         00h don't display data received from host
  3776.         01h display data
  3777. --------N-610003SF03-------------------------
  3778. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "FLOW CONTROL DATA"
  3779.     AX = 0003h subfn 03h
  3780.     DS:BX -> argument block (see below)
  3781. Return: AX = status (see AX=0003h/SF=00h)
  3782. Desc:    this function permits the caller to freeze/unfreeze the display and
  3783.       the ring buffer
  3784. SeeAlso: AX=0003h/SF=02h,AX=0003h/SF=06h
  3785.  
  3786. Format of argument block:
  3787. Offset    Size    Description
  3788.  00h    BYTE    session ID (00h)
  3789.  01h    BYTE    03h (function "flow control data")
  3790.  02h    BYTE    flow control flag
  3791.         00h allow characters to be put into display or ring buffer
  3792.         01h don't place any more characters into display or ring buffer
  3793. --------N-610003SF04-------------------------
  3794. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - END ACTIVE SESSION
  3795.     AX = 0003h subfn 04h
  3796.     DS:BX -> argument block (see below)
  3797. Return: AX = status (see AX=0003h/SF=00h)
  3798. SeeAlso: AX=0003h/SF=0Ah,AX=0003h/SF=0Dh,AX=0003h/SF=0Fh
  3799.  
  3800. Format of argument block:
  3801. Offset    Size    Description
  3802.  00h    BYTE    session ID (00h)
  3803.  01h    BYTE    04h (function "end active session")
  3804. --------N-610003SF05-------------------------
  3805. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SESSION PARAMETER
  3806.     AX = 0003h subfn 05h
  3807.     DS:BX -> argument block (see below)
  3808. Return: AX = status (see AX=0003h/SF=00h)
  3809. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=06h,AX=0003h/SF=08h
  3810.  
  3811. Format of argument block:
  3812. Offset    Size    Description
  3813.  00h    BYTE    session ID (00h)
  3814.  01h    BYTE    05h (function "set session parameter")
  3815.  02h    BYTE    parameter number (see below)
  3816.  03h    BYTE    new parameter value
  3817.  
  3818. Values for parameter number:
  3819.  00h    line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
  3820.           05h=300, 06h=600, 07h=1200, 08h=2400, 09h=4800, 0Ah=9600)
  3821.  01h    parity (00h=none, 01h=odd, 02h=even)
  3822.  02h    duplex (00h=full, 01h=half)
  3823.  03h    character size (00h=7 bits, 01h=8 bits)
  3824.  04h    stop bits (00h=1, 01h=2)
  3825.  05h    XON/XOFF flow control (00h=no, 01h=yes)
  3826.  07h    intercharacter delay in tenths of a second
  3827.  08h    interline delay in tenths of a second
  3828.  09h    auto linefeed (00h=no, 01h=yes)
  3829.  0Ah    filter control characters (00h=no, 01h=yes)
  3830.  0Bh    terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
  3831.  0Ch    auto wrap (00h=no, 01h=yes)
  3832.  0Dh    cursor shape (00h=underscore, 01h=block)
  3833.  0Eh    character set (00h=UK, 01h=US ASCII)
  3834.  0Fh    printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
  3835. --------N-610003SF06-------------------------
  3836. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET SESSION PARAMETER
  3837.     AX = 0003h subfn 06h
  3838.     DS:BX -> argument block (see below)
  3839. Return: AX = status (see AX=0003h/SF=00h)
  3840. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=05h,AX=0003h/SF=07h
  3841.  
  3842. Format of argument block:
  3843. Offset    Size    Description
  3844.  00h    BYTE    session ID (00h)
  3845.  01h    BYTE    06h (function "get session parameter")
  3846.  02h    BYTE    parameter number (see AX=0003h/SF=05h)
  3847.  03h    BYTE    (return) current parameter value
  3848. --------N-610003SF07-------------------------
  3849. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET TAB SETTINGS
  3850.     AX = 0003h subfn 07h
  3851.     DS:BX -> argument block (see below)
  3852. Return: AX = status (see AX=0003h/SF=00h)
  3853. SeeAlso: AX=0003h/SF=05h,AX=0003h/SF=08h
  3854.  
  3855. Format of argument block:
  3856. Offset    Size    Description
  3857.  00h    BYTE    session ID (00h)
  3858.  01h    BYTE    07h (function "set tab settings")
  3859.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  3860.           each byte = 00h if no tab, 01h if tab at that position
  3861. --------N-610003SF08-------------------------
  3862. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET TAB SETTINGS
  3863.     AX = 0003h subfn 08h
  3864.     DS:BX -> argument block (see below)
  3865. Return: AX = status (see AX=0003h/SF=00h)
  3866. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=07h
  3867.  
  3868. Format of argument block:
  3869. Offset    Size    Description
  3870.  00h    BYTE    session ID (00h)
  3871.  01h    BYTE    08h (function "get tab settings")
  3872.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  3873.         each byte set to 00h if no tab, 01h if tab at that position
  3874. --------N-610003SF09-------------------------
  3875. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - REFRESH EMULATION SCREEN
  3876.     AX = 0003h subfn 09h
  3877.     DS:BX -> argument block (see below)
  3878. Return: AX = status (see AX=0003h/SF=00h)
  3879. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Bh
  3880.  
  3881. Format of argument block:
  3882. Offset    Size    Description
  3883.  00h    BYTE    session ID (00h)
  3884.  01h    BYTE    09h (function "refresh emulation screen")
  3885. --------N-610003SF0A-------------------------
  3886. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SUSPEND SESSION TEMPORARILY
  3887.     AX = 0003h subfn 0Ah
  3888.     DS:BX -> argument block (see below)
  3889. Return: AX = status (see AX=0003h/SF=00h)
  3890. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=09h,AX=0003h/SF=0Bh,AX=0003h/SF=0Dh
  3891.  
  3892. Format of argument block:
  3893. Offset    Size    Description
  3894.  00h    BYTE    session ID (00h)
  3895.  01h    BYTE    0Ah (function "suspend session temporarily")
  3896.  02h    WORD    size of session information to be saved
  3897.  04h    WORD    pointer to buffer in caller's DS
  3898. --------N-610003SF0B-------------------------
  3899. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESUME SUSPENDED SESSION
  3900.     AX = 0003h subfn 0Bh
  3901.     DS:BX -> argument block (see below)
  3902. Return: AX = status (see AX=0003h/SF=00h)
  3903. SeeAlso: AX=0003h/SF=09h,AX=0003h/SF=0Ah
  3904.  
  3905. Format of argument block:
  3906. Offset    Size    Description
  3907.  00h    BYTE    session ID (00h)
  3908.  01h    BYTE    0Bh (function "restore previously suspended session")
  3909.  02h    WORD    size of buffer into which session info is restored
  3910.  04h    WORD    pointer to buffer in caller's DS
  3911. --------N-610003SF0C-------------------------
  3912. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SCROLL LOCK CHECKING
  3913.     AX = 0003h subfn 0Ch
  3914.     DS:BX -> argument block (see below)
  3915. Return: AX = status (see AX=0003h/SF=00h)
  3916. SeeAlso: AX=0003h/SF=00h
  3917.  
  3918. Format of argument block:
  3919. Offset    Size    Description
  3920.  00h    BYTE    session ID (00h)
  3921.  01h    BYTE    0Ch (function "set state of scroll lock checking")
  3922.  02h    BYTE    check_scroll_lock flag
  3923.         00h off
  3924.         01h on (display of host data stopped while ScrollLock on)
  3925. --------N-610003SF0D-------------------------
  3926. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - EXIT EMULATION
  3927.     AX = 0003h subfn 0Dh
  3928.     DS:BX -> argument block (see below)
  3929. Return: AX = status (see AX=0003h/SF=00h)
  3930. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Ah
  3931.  
  3932. Format of argument block:
  3933. Offset    Size    Description
  3934.  00h    BYTE    session ID (00h)
  3935.  01h    BYTE    0Dh (function "exit emulation")
  3936. --------N-610003SF0E-------------------------
  3937. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON CHAR FROM HOST
  3938.     AX = 0003h subfn 0Eh
  3939.     DS:BX -> argument block (see below)
  3940. Return: AX = status (see AX=0003h/SF=00h)
  3941. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=14h
  3942.  
  3943. Format of argument block:
  3944. Offset    Size    Description
  3945.  00h    BYTE    session ID (00h)
  3946.  01h    BYTE    0Eh (function "interrupt on character from host")
  3947.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  3948.  06h    DWORD    stack pointer to use when call is made
  3949. --------N-610003SF0F-------------------------
  3950. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START A SESSION
  3951.     AX = 0003h subfn 0Fh
  3952.     DS:BX -> argument block (see below)
  3953. Return: AX = status (see AX=0003h/SF=00h)
  3954. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Bh
  3955.  
  3956. Format of argument block:
  3957. Offset    Size    Description
  3958.  00h    BYTE    session ID (00h)
  3959.  01h    BYTE    0Fh (function "start a session")
  3960.  02h    WORD    pointer to information area in caller's current DS (see below)
  3961.  
  3962. Format of information area:
  3963. Offset    Size    Description
  3964.  00h    WORD    length of service name
  3965.  02h    WORD    pointer to service name in caller's DS
  3966.  04h    BYTE    type of connection (00h=connection name, 01h=dialout)
  3967.  05h    WORD    length of connection name/telephone number
  3968.  07h    WORD    pointer to connection name/telephone number
  3969. --------N-610003SF10-------------------------
  3970. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP PRINTING
  3971.     AX = 0003h subfn 10h
  3972.     DS:BX -> argument block (see below)
  3973. Return: AX = status (see AX=0003h/SF=00h)
  3974. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=13h
  3975.  
  3976. Format of argument block:
  3977. Offset    Size    Description
  3978.  00h    BYTE    session ID (00h)
  3979.  01h    BYTE    10h (function "start/stop printing of data received from host)
  3980.  02h    WORD    print capture flag (00h=off, 01h=on)
  3981. --------N-610003SF11-------------------------
  3982. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET FILE TRANSFER PARAMETERS
  3983.     AX = 0003h subfn 11h
  3984.     DS:BX -> argument block (see below)
  3985. Return: AX = status (see AX=0003h/SF=00h)
  3986. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  3987.  
  3988. Format of argument block:
  3989. Offset    Size    Description
  3990.  00h    BYTE    session ID (00h)
  3991.  01h    BYTE    11h (function "get file transfer parameters")
  3992.  02h    WORD    pointer to info area in caller's current DS (see below)
  3993.  
  3994. Format of info area:
  3995. Offset    Size    Description
  3996.  00h    BYTE    protocol flag (00h none, 01h Kermit)
  3997.  01h    BYTE    direction flag (00h send, 01h receive)
  3998.  02h    BYTE    length of null-terminated PC filename
  3999.  03h    DWORD    pointer to null-terminated PC filename
  4000.  07h    BYTE    length of null-terminated host filename
  4001.  08h    DWORD    pointer to null-terminated host filename
  4002. --------N-610003SF12-------------------------
  4003. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET CONNECTION INFORMATION
  4004.     AX = 0003h subfn 12h
  4005.     DS:BX -> argument block (see below)
  4006. Return: AX = status (see AX=0003h/SF=00h)
  4007. SeeAlso: AX=0003h/SF=11h,AX=0003h/SF=15h
  4008.  
  4009. Format of argument block:
  4010. Offset    Size    Description
  4011.  00h    BYTE    session ID (00h)
  4012.  01h    BYTE    12h (function "get connection information")
  4013.  02h    WORD    offset of buffer for connection information (see below)
  4014.  
  4015. Format of connection information:
  4016. Offset    Size    Description
  4017.  00h    WORD    length of service name (returned)
  4018.  02h    WORD    pointer to 64-byte buffer for service name
  4019.  04h    BYTE    type of connection
  4020.         00h connection name
  4021.         01h dialout
  4022.  05h    WORD    length of connection name/telephone number
  4023.  07h    WORD    pointer to 64-byte buffer for name/telno
  4024.  09h    BYTE    server line number being used (returned)
  4025. --------N-610003SF13-------------------------
  4026. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP TRACING TRAFFIC
  4027.     AX = 0003h subfn 13h
  4028.     DS:BX -> argument block (see below)
  4029. Return: AX = status (see AX=0003h/SF=00h)
  4030. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Eh
  4031.  
  4032. Format of argument block:
  4033. Offset    Size    Description
  4034.  00h    BYTE    session ID (00h)
  4035.  01h    BYTE    13h (function "start/stop tracing data traffic in session")
  4036.  02h    BYTE    trace flag (00h=off, 01h=on)
  4037. --------N-610003SF14-------------------------
  4038. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON HOST MESSAGE
  4039.     AX = 0003h subfn 14h
  4040.     DS:BX -> argument block (see below)
  4041. Return: AX = status (see AX=0003h/SF=00h)
  4042. SeeAlso: AX=0003h/SF=0Eh
  4043.  
  4044. Format of argument block:
  4045. Offset    Size    Description
  4046.  00h    BYTE    session ID (00h)
  4047.  01h    BYTE    14h (function "interrupt on message from host")
  4048.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  4049.  06h    DWORD    stack pointer to use when call is made
  4050. --------N-610003SF15-------------------------
  4051. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESET ERROR
  4052.     AX = 0003h subfn 15h
  4053.     DS:BX -> argument block (see below)
  4054. Return: AX = status (see AX=0003h/SF=00h)
  4055. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  4056.  
  4057. Format of argument block:
  4058. Offset    Size    Description
  4059.  00h    BYTE    session ID (00h)
  4060.  01h    BYTE    15h (function "reset error")
  4061. --------V-610003-----------------------------
  4062. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - REPORT ZOOM FACTOR
  4063.     AX = 0003h
  4064. Return: AX = zoom factor
  4065. Desc:    returns the current zoom factor
  4066. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  4067.       obtained by calling INT 16/AH=FFh
  4068.     not all vendors include the Tseng TSR which supports these functions
  4069. SeeAlso: AX=0000h"OPTIMA",AX=0005h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  4070. --------N-610004-----------------------------
  4071. INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
  4072.     AX = 0004h
  4073.     DS:DX -> request block (function 0008h)
  4074. Return: AX = status
  4075.         0000h server ID returned in request block
  4076.         000Fh invalid drive
  4077.         0015h drive not ready
  4078.  
  4079. Format of request block:
  4080. Offset    Size    Description
  4081.  00h    WORD    0008h
  4082.  02h    WORD    drive number (0=default, 1=A, ...)
  4083.  04h  6 BYTEs    buffer for server ID
  4084. --------V-610004-----------------------------
  4085. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ENTER SPECIFY MODE
  4086.     AX = 0004h
  4087. Notes:    Specify Mode is enabled by hot key (seeAlso below), and allows
  4088.       panning and zooming via the numeric keypad.
  4089.     INT 61 is the default interrupt; the actual interrupt number can be
  4090.       obtained by calling INT 16/AH=FFh
  4091.     not all vendors include the Tseng TSR which supports these functions
  4092. SeeAlso: AX=0000h"OPTIMA",AX=0007h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  4093. --------N-610005-----------------------------
  4094. INT 61 - Banyan VINES - PRINTER CONTROL
  4095.     AX = 0005h
  4096.     DS:DX -> request block
  4097. Return: AX = status
  4098.         0000h successful
  4099.         0001h network software not installed or incompatible
  4100. SeeAlso: INT 2F/AX=D702h
  4101.  
  4102. Format of request block:
  4103. Offset    Size    Description
  4104.  00h    WORD    function
  4105.         0201h "endspool" all data for a print job has been sent
  4106.         0205h "getactive" get currently active printer port
  4107.  02h    WORD    number of active port (1-3)
  4108.  04h    WORD    ??? (0 for func 0201h, 3 for func 0205h)
  4109.  06h    WORD    0000h
  4110. --------V-610005-----------------------------
  4111. INT 61 - OPTIMA 1024 VGA-Sync - QUERY ZOOM WINDOW
  4112.     AX = 0005h
  4113.     BX:CX -> buffer for window parameters (see below)
  4114. Notes:    INT 61 is the default interrupt; the actual interrupt number can be
  4115.       obtained by calling INT 16/AH=FFh
  4116.     not all vendors include the Tseng TSR which supports these functions
  4117. SeeAlso: AX=0000h"OPTIMA",AX=0003h"OPTIMA",AX=0006h"OPTIMA"
  4118. SeeAlso: INT 16/AH=FFh"OPTIMA"
  4119.  
  4120. Format of window parameters:
  4121. Offset    Size    Description
  4122.  00h    WORD    X start of zoom window
  4123.  02h    WORD    Y start of zoom window
  4124.  04h    WORD    X end of zoom window
  4125.  06h    WORD    Y end of zoom window
  4126.  08h    WORD    current zoom factor
  4127.  0Ah    WORD    zoom offset start X
  4128.  0Ch    WORD    zoom offset start Y
  4129. --------V-610006-----------------------------
  4130. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM WINDOW
  4131.     AX = 0006h
  4132.     BX:CX -> zoom window description (see below)
  4133. Notes:    width of zoom window must be a multiple of the pixel replication (zoom)
  4134.       factor
  4135.     INT 61 is the default interrupt; the actual interrupt number can be
  4136.       obtained by calling INT 16/AH=FFh
  4137.     not all vendors include the Tseng TSR which supports these functions
  4138. SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0005h"OPTIMA",AX=0008h"OPTIMA"
  4139. SeeAlso: INT 16/AH=FFh"OPTIMA"
  4140.  
  4141. Format of zoom window description:
  4142. Offset    Size    Description
  4143.  00h    WORD    X start of zoom window
  4144.  02h    WORD    Y start of zoom window
  4145.  04h    WORD    X end of zoom window
  4146.  06h    WORD    Y end of zoom window
  4147. --------V-610007-----------------------------
  4148. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY APPLICATION KEY
  4149.     AX = 0007h
  4150. Return: AX = current state (0000h/0001h)
  4151. Desc:    returns the current toggle state of the application (END) key in
  4152.       specify mode. E.g. in the OPTIMA AutoCAD driver, 0 means AutoCAD
  4153.       calls INT 61/AX=0001h every time the crosshair cursor moves.
  4154. Notes:    In specify mode, the END key has been reserved for applications.
  4155.     INT 61 is the default interrupt; the actual interrupt number can be
  4156.       obtained by calling INT 16/AH=FFh
  4157.     not all vendors include the Tseng TSR which supports these functions
  4158. SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0004h"OPTIMA"
  4159. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 7A"AutoCAD"
  4160. --------N-610007BX0002-----------------------
  4161. INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
  4162.     AX = 0007h
  4163.     BX = 0002h
  4164.     DS:DX -> StreetTalk service name
  4165.     DS:DI -> port record block (see below)
  4166. Return: AX = status (see below)
  4167. SeeAlso: AX=0007h/BX=0004h
  4168.  
  4169. Values for status:
  4170.  0000h    successful
  4171.  0001h    PC network software not installed or incompatible
  4172.  03E9h    incorrect name syntax
  4173.  03EAh    organization name too long
  4174.  03EBh    group name too long
  4175.  03ECh    item name too long
  4176.  03EDh    StreetTalk name too long
  4177.  03F3h    organization not found
  4178.  03F4h    group not found
  4179.  03F5h    StreetTalk name not found
  4180.  03F8h    not a StreetTalk name
  4181.  0409h    modify access denied
  4182.  040Dh    appropriate StreetTalk name unavailable
  4183.  
  4184. Format of port record block:
  4185. Offset    Size    Description
  4186.  00h    WORD    number of 17-byte elements
  4187.  02h 17 BYTEs    element (byte 00h = input port type, bytes 01h-10h = port)
  4188.         (see AX=0001h#"Sosock" for port format)
  4189. --------N-610007BX0004-----------------------
  4190. INT 61 - Banyan VINES - SET PORTS FOR A SERVICE
  4191.     AX = 0007h
  4192.     BX = 0004h
  4193.     DS:DX -> StreetTalk name of service
  4194.     DS:DI -> port record block (see below)
  4195. Return: AX = status (see AX=0007h/BX=0002h)
  4196. SeeAlso: AX=0007h/BX=0002h
  4197.  
  4198. Format of port record block:
  4199. Offset    Size    Description
  4200.  00h    WORD    number of 17-byte elements
  4201.  02h 17 BYTEs    element: byte 00h = input port type, 01h-10h = port
  4202.         (see AX=0001h#"Sosock" for port format)
  4203. --------N-610007BX0005-----------------------
  4204. INT 61 - Banyan VINES - GET USER NAME
  4205.     AX = 0007h
  4206.     BX = 0005h
  4207.     DS:DX -> 64-byte buffer for user's StreetTalk name
  4208. Return: AX = status
  4209.         0000h successful
  4210.         0001h network software not installed or incompatible
  4211. Note:    if no user logged in, first byte of returned name will be 00h
  4212. SeeAlso: AX=0007h/BX=0007h
  4213. --------N-610007BX0006-----------------------
  4214. INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
  4215.     AX = 0007h
  4216.     BX = 0006h
  4217.     SI = error code (>100)
  4218.     DS:DX -> 80-byte buffer for error text
  4219. Return: AX = status
  4220.         0000h successful
  4221.         0001h network software not installed or incompatible
  4222. --------N-610007BX0007-----------------------
  4223. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  4224.     AX = 0007h
  4225.     BX = 0007h
  4226.     DS:DX -> NiceName block (see below)
  4227. Return: AX = status (see AX=0007h/BX=0002h)
  4228. SeeAlso: AX=0007h/BX=0005h,AX=0007h/BX=0008h
  4229.  
  4230. Format of NiceName block:
  4231. Offset    Size    Description
  4232.  00h    WORD    type of name
  4233.         0064h organization
  4234.         00C8h group
  4235.         012Ch item
  4236.  02h    WORD    pointer to ASCIZ input name
  4237.  04h    WORD    pointer to 64-byte buffer for output name
  4238. --------N-610007BX0008-----------------------
  4239. INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
  4240.     AX = 0007h
  4241.     BX = 0008h
  4242.     DS:DX -> enumerate block (see below)
  4243. Return: AX = status
  4244.         0000h successful
  4245.         0411h all matching names have been returned
  4246.         0412h some groups unavailable, all available matches returned
  4247. Note:    each program using this call should continue until a nonzero status
  4248.       is returned; otherwise, some resources will not be freed for several
  4249.       hours
  4250. SeeAlso: AX=0007h/BX=0007h
  4251.  
  4252. Format of enumerate block:
  4253. Offset    Size    Description
  4254.  00h    WORD    return code
  4255.  02h    WORD    pointer to pattern string
  4256.  04h    WORD    enumerate type
  4257.         0064h organization
  4258.         00C8h group
  4259.         012Ch item
  4260.  06h    WORD    enumerate class
  4261.         0000h unspecified (return all matching items)
  4262.         0001h user names
  4263.         0002h service names
  4264.         0003h list names
  4265.         0004h nicknames
  4266.  08h    WORD    pointer to category criteria block (see below) or 0
  4267.  0Ah    WORD    pointer to array of 64-byte returned names
  4268.  0Ch    WORD    number of names returned
  4269.  0Eh  6 BYTEs    reserved for subsequent enumerated calls (set to zeros on first
  4270.           call)
  4271.  
  4272. Format of category criteria block:
  4273. Offset    Size    Description
  4274.  00h    WORD    exclude flag
  4275.         0000h return only items with the specified categories
  4276.         0001h return all items except those with the given categories
  4277.  02h    WORD    number of categories
  4278.  04h    WORD    category 1 value
  4279.  06h    WORD    category 2 value
  4280.         ...
  4281.  
  4282. Values for common service categories:
  4283.  0002h    file service
  4284.  0003h    print service
  4285.  0004h    mail service
  4286.  0005h    StreetTalk
  4287.  0006h    time service
  4288.  0008h    semaphore service
  4289.  0009h    3270/SNA service
  4290.  000Ah    asynchronous terminal emulation service
  4291.  000Ch    NETBIOS service
  4292.  000Dh    PC-based service
  4293. --------V-610008-----------------------------
  4294. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM OFFSET
  4295.     AX = 0008h
  4296.     BX = X start of zoom offset
  4297.     CX = Y start of zoom offset
  4298. Desc:    specifies the first byte of video memory to appear in the zoom window
  4299. Notes:    INT 61 is the default interrupt; the actual interrupt number can be
  4300.       obtained by calling INT 16/AH=FFh
  4301.     not all vendors include the Tseng TSR which supports these functions
  4302. SeeAlso: AX=0000h"OPTIMA",AX=0006h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  4303. --------N-610008BX0002-----------------------
  4304. INT 61 - Banyan VINES - POST MESSAGE ON LOCAL DISPLAY
  4305.     AX = 0008h
  4306.     BX = 0002h
  4307.     CX = flags
  4308.         bit 0: message will remain on screen until user presses ^X
  4309.         bit 1: ring bell after displaying message
  4310.         bit 2: blink
  4311.     DS:DX -> ASCIZ string to display (only first 80 chars used)
  4312. Return: AX = status
  4313.         0000h successful
  4314.         000Bh message display function currently busy
  4315.         000Ch message queue full
  4316. Note:    queues up to three messages to be displayed on the bottom line
  4317. SeeAlso: AX=0008h/BX=0003h
  4318. --------N-610008BX0003-----------------------
  4319. INT 61 - Banyan VINES - INTERCEPT VINES 25th-LINE MESSAGES AT LOCAL PC
  4320.     AX = 0008h
  4321.     BX = 0003h
  4322.     DS:DX -> request block
  4323. Return: AX = status
  4324.         0000h successful
  4325.         0001h network software not installed or incompatible
  4326. Notes:    message handler should not call BIOS or DOS functions, and should
  4327.       either call next handler or simply return
  4328.     to stop intercepting messages, set prev and next request blocks to
  4329.       point at each other
  4330. SeeAlso: AX=0008h/BX=0002h
  4331.  
  4332. Format of request block:
  4333. Offset    Size    Description
  4334.  00h    DWORD    pointer to user-written message handler
  4335.  04h    DWORD    pointer to next request block (filled in by VINES)
  4336.  08h    DWORD    pointer to previous request block (filled in by VINES)
  4337.  0Ch    DWORD    pointer to message storage area (filled by VINES) (see below)
  4338.  
  4339. Format of message storage area:
  4340. Offset    Size    Description
  4341.  00h 16 BYTEs    IPC port of message sender (see AX=0001h#"Sosock")
  4342.  10h    BYTE    message flags
  4343.  11h    WORD    reserved
  4344.  13h    BYTE    length of message
  4345.  14h 80 BYTEs    message text
  4346. --------N-61000A-----------------------------
  4347. INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
  4348.     AX = 000Ah
  4349. Note:    either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
  4350.       which is loaded second.  The first interface loaded will use AX=0002h
  4351. SeeAlso: INT 61/AX=0002h
  4352. --------N-6101-------------------------------
  4353. INT 61 - Banyan VINES - CHECK SERVICE
  4354.     AH = 01h
  4355.     AL = service ID (see below)
  4356. Return: AX = status
  4357.         0000h installed
  4358.         0001h not installed
  4359.         0002h invalid ID
  4360.  
  4361. Values for service ID:
  4362.  01h    communications
  4363.  02h    primary 3270 emulation
  4364.  03h    async terminal emulation
  4365.  04h    file deflection
  4366.  07h    StreetTalk
  4367.  08h    environment
  4368.  0Ah    secondary 3270 emulation
  4369.  0Bh    semaphore service
  4370.  0Ch    3270 emulation active status
  4371.  0Dh    3270 keyboard interrupt simulator
  4372. --------N-6101--BX0000-----------------------
  4373. INT 61 u - PC/TCP kernel v2.1+ - "net_config" - CONFIGURE RUNNING KERNEL
  4374.     AH = 01h
  4375.     BX = 0000h
  4376.     DH = tag number
  4377.     DL = device number
  4378.     DS:SI -> buffer to send to kernel
  4379.     ES:DI -> integer containing size of buffer
  4380. Return: CF clear if successful
  4381.     CF set on error
  4382.         AX = error code (see INT 61"PC/TCP")
  4383. Notes:    there are a large number of tags available; the items returned
  4384.       all refer to local kernel configuration, and are not needed in
  4385.       normal use.
  4386.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4387. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=02"PC/TCP"
  4388. --------N-6102-------------------------------
  4389. INT 61 - Banyan VINES - GET REVISION NUMBER
  4390.     AH = 02h
  4391.     DS:DX -> 2-byte buffer for result
  4392. Return: AX = 0000h installed
  4393.         DS:DX buffer contains revision number as
  4394.         10000d * major_ver + 100d * minor_ver + patch_revision
  4395. --------N-6102--BX0000-----------------------
  4396. INT 61 u - PC/TCP kernel v2.1+ - "get_kernel_info" - GET MISCELLAN LOCAL INFO
  4397.     AH = 02h
  4398.     BX = 0000h
  4399.     DH = tag number
  4400.     DL = device number
  4401.     DS:SI -> buffer for result (up to 48 bytes for version <= 2.2)
  4402.     ES:DI -> integer containing size of buffer
  4403. Return: CF clear if successful
  4404.         Data loaded into specified buffer, and size value altered
  4405.     CF set on error
  4406.         AX = error code (see INT 61"PC/TCP")
  4407. Notes:    there are a large number of tags available; the items returned
  4408.       all refer to local kernel configuration, and are not needed in
  4409.       normal use.
  4410.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4411. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  4412. --------N-6105-------------------------------
  4413. INT 61 - PC/TCP kernel v2.05+ - "get_addr" - GET INTERNET ADDRESS OF NET DESCR
  4414.     AH = 05h
  4415.     BX = network descriptor
  4416. Return: CF clear if successful
  4417.         DX:AX = Internet address of ND
  4418.     CF set on error
  4419.         AX = error code (see INT 61"PC/TCP")
  4420. Notes:    the installation check consists of testing for the signature "TCPTSR"
  4421.       three bytes beyond the start of the interrupt handler
  4422.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  4423.       interrupt from 20h through E0h
  4424. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=16h"PC/TCP"
  4425. SeeAlso: INT 63/AH=25h"BW-TCP"
  4426. --------N-6106-------------------------------
  4427. INT 61 - PC/TCP kernel v2.05 - "net_info" - GET INTERFACE STATISTICS
  4428.     AH = 06h
  4429.     BX = network descriptor (must be allocated and open)
  4430.     DS:SI -> 38-byte buffer (see below)
  4431. Return: CF clear if successful
  4432.         buffer filled
  4433.     CF set on error
  4434.         AX = error code (see INT 61"PC/TCP")
  4435. Desc:    returns the statistics relevant to the particular network interface
  4436.        used by the specified network descriptor
  4437. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=05h"PC/TCP"
  4438.  
  4439. Format of buffer:
  4440. Offset    Size    Description
  4441.  00h    WORD    interface class (e.g. 802.3)
  4442.  02h    WORD    type (manufacturer) of interface
  4443.  04h    WORD    interface number
  4444.  06h    DWORD    (big-endian) IP address of interface
  4445.  0Ah    DWORD    subnet mask
  4446.  0Eh    WORD    0001h if interface is up
  4447.  10h    DWORD    total packets received
  4448.  14h    DWORD    total packets sent
  4449.  18h    DWORD    receive errors
  4450.  1Ch    DWORD    send errors
  4451.  20h    WORD    length of local net address (e.g. 0006h for Ethernet)
  4452.  22h    DWORD    pointer to local net address
  4453. --------N-6107-------------------------------
  4454. INT 61 - PC/TCP kernel v2.05+ - "net_globalize" - MAKE NET DESCRIPTOR GLOBAL
  4455.     AH = 07h
  4456.     BX = local network descriptor
  4457. Return: CF clear if successful
  4458.         AX = global network descriptor
  4459.     CF set on error
  4460.         AX = error code (see INT 61"PC/TCP")
  4461. Notes:    the new network descriptor can be accessed from all processes and is
  4462.       independent of DOS
  4463.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4464. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  4465. SeeAlso: INT 61/AH=29h
  4466. --------N-6108-------------------------------
  4467. INT 61 - PC/TCP kernel v2.05+ - "net_release" - CLOSE A NETWORK DESCRIPTOR
  4468.     AH = 08h
  4469.     BX = network descriptor
  4470. Return: CF clear if successful
  4471.         AX = 0000h (BWPCTCP shim)
  4472.     CF set on error
  4473.         AX = error code (see INT 61"PC/TCP")
  4474. Note:    the descriptor will be closed and resources released.  If a stream
  4475.       descriptor, the protocol (FIN etc) is completed unless the
  4476.       non-blocking option has been set.
  4477. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=09h"PC/TCP"
  4478. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  4479. --------N-6109-------------------------------
  4480. INT 61 - PC/TCP kernel v2.05+ - "net_releaseall" - CLOSE ALL NON-GLOBAL DESCRS
  4481.     AH = 09h
  4482. Return: CF clear
  4483. Notes:    this call performs function 08h on every non-global network descriptor.
  4484.       Global descriptors must be released individually.
  4485.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  4486.       interrupt from 20h through E0h
  4487. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  4488. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  4489. --------N-610A-------------------------------
  4490. INT 61 - PC/TCP kernel v2.05 - "net_send" - ???
  4491.     AH = 0Ah
  4492.     ???
  4493. Return: ???
  4494. Notes:    this function is described as "unused" in the v2.05 and v2.2
  4495.       documentation
  4496.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4497. SeeAlso: AH=0Bh
  4498. --------N-610B-------------------------------
  4499. INT 61 - PC/TCP kernel v2.05 - "net_sendto" - ???
  4500.     AH = 0Bh
  4501.     ???
  4502. Return: ???
  4503. Notes:    this function is described as "unused" in the v2.05 and v2.2
  4504.       documentation
  4505.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4506. SeeAlso: AH=0Ah
  4507. --------N-610C-------------------------------
  4508. INT 61 u - PC/TCP kernel v2.05+ - "net_stat" - GET CONNECTION STATISTICS
  4509.     AH = 0Ch
  4510.     BX = network descriptor or one of the following:
  4511.         FFFCh for kernel ICMP statistics
  4512.         FFFDh for kernel UDP statistics
  4513.         FFFEh for kernel IP statistics
  4514.         FFFFh for kernel TCP statistics
  4515.     DS:DX -> 64-byte buffer
  4516. Return: CF clear if successful
  4517.         buffer filled
  4518.     CF set on error
  4519.         AX = error code (see INT 61"PC/TCP")
  4520. Notes:    the fields filled in for a network descriptor depend on the protocol
  4521.       family used by that descriptor's connection
  4522.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4523. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  4524.  
  4525. Format of kernel TCP statistics:
  4526. Offset    Size    Description
  4527.  00h 16 BYTEs    unused
  4528.  10h    DWORD    bytes sent
  4529.  14h    DWORD    bytes received
  4530.  18h  8 BYTEs    unused
  4531.  20h    DWORD    packets sent
  4532.  24h    DWORD    packets received
  4533.  28h    DWORD    bad checksums
  4534.  2Ch    DWORD    count of window ignored by remote
  4535.  30h    DWORD    timeouts
  4536.  34h    DWORD    resets
  4537.  38h    DWORD    duplicate packets
  4538.  3Ch    DWORD    retransmits
  4539.  
  4540. Format of kernel IP statistics:
  4541. Offset    Size    Description
  4542.  00h  8 BYTEs    unused
  4543.  08h    DWORD    invalid IP header length errors
  4544.  0Ch    DWORD    protocol errors (unwanted packets)
  4545.  10h    DWORD    duplicate fragments received
  4546.  14h    DWORD    bad fragments received
  4547.  18h    DWORD    security errors
  4548.  1Ch    DWORD    count of bad IP addresses received
  4549.  20h    DWORD    packets sent
  4550.  24h    DWORD    packets received
  4551.  28h    DWORD    bad checksums received
  4552.  2Ch    DWORD    total IP protocol errors
  4553.  30h    DWORD    fragmentation errors
  4554.  34h    DWORD    IP packets discarded + bad security + bad fragments
  4555.  38h    DWORD    fragments received
  4556.  3Ch  4 BYTEs    unused
  4557.  
  4558. Format of kernel UDP statistics:
  4559. Offset    Size    Description
  4560.  00h 28 BYTEs    unused
  4561.  1Ch    DWORD    packets dropped for lack of buffers
  4562.  20h    DWORD    packets sent
  4563.  24h    DWORD    packets received
  4564.  28h    DWORD    bad checksums
  4565.  2Ch    DWORD    port not listening errors
  4566.  30h  4 BYTEs    unused
  4567.  34h    DWORD    truncated receives
  4568.  38h  8 BYTEs    unused
  4569.  
  4570. Format of kernel ICMP statistics:
  4571. Offset    Size    Description
  4572.  00h    DWORD    "TimeEx" sent
  4573.  04h    DWORD    "TimeEx" received
  4574.  08h    DWORD    "ParamProb" sent
  4575.  0Ch    DWORD    "ParamProb" received
  4576.  10h    DWORD    redirects received
  4577.  14h    DWORD    source quenches received
  4578.  18h    DWORD    ICMP Echo Requests ("ping") sent
  4579.  1Ch    DWORD    ICMP Echo Requests received
  4580.  20h    DWORD    packets sent
  4581.  24h    DWORD    packets received
  4582.  28h    DWORD    bad packets received
  4583.  2Ch    DWORD    "DestUn" received
  4584.  30h    DWORD    packet send errors
  4585.  34h    DWORD    "DestUn" sent
  4586.  38h    DWORD    ICMP Echo replies received
  4587.  3Ch    DWORD    ICMP Echo replies sent
  4588. --------N-610D-------------------------------
  4589. INT 61 - PC/TCP kernel v2.05+ - "is_netnd" - CHECK IF NETWORK DESCRIPTOR VALID
  4590.     AH = 0Dh
  4591.     BX = possible network descriptor
  4592. Return: CF clear if valid
  4593.     CF set on error
  4594.         AX = error code (see INT 61"PC/TCP")
  4595. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  4596. SeeAlso: INT 61/AH=22h
  4597. --------N-610E-------------------------------
  4598. INT 61 - PC/TCP kernel v2.05+ - "net_select" - DETECT READINESS OF NETWORK
  4599.     AH = 0Eh
  4600.     BX = maximum value of network descriptor for which to return info
  4601.     DS:DX -> 32-bit (max) array of bit flags for read readiness
  4602.     ES:DI -> 32-bit (max) array of bit flags for write readiness
  4603. Return: CF clear
  4604. Notes:    bits in the DS:DX buffer are set if the corresponding network
  4605.       descriptor may be read without blocking; bits in the ES:DI buffer
  4606.       are set if the corresponding network descriptor may be written
  4607.       without blocking.  This implies that the network descriptor has
  4608.       opened correctly and the protocol initialized.
  4609.     the installation check consists of testing for the signature "TCPTSR"
  4610.       three bytes beyond the start of the interrupt handler
  4611.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  4612.       interrupt from 20h through E0h
  4613. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  4614. --------N-610F-------------------------------
  4615. INT 61 - PC/TCP kernel v2.05+ - "get_netversion" - GET SOFTWARE VERSION
  4616.     AH = 0Fh
  4617. Return: CF clear
  4618.     AX = version (AH = major, AL = minor)
  4619.     BX = patch level
  4620. Notes:    patch levels are no longer used starting with version 2.10; instead,
  4621.       the minor version level is incremented.
  4622.     Beame&Whiteside's BWPCTCP v3.0a shim reports version 2.05, but does not
  4623.       set BX
  4624. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  4625. --------N-6110-------------------------------
  4626. INT 61 - PC/TCP kernel v2.05+ - "net_shutdown" - UNINSTALL
  4627.     AH = 10h
  4628. Return: CF clear if successful
  4629.     CF set on error
  4630.         AX = error code (see INT 61"PC/TCP")
  4631. Note:    not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4632. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  4633. --------N-6111-------------------------------
  4634. INT 61 - PC/TCP kernel v2.05+ - "disable_async" - DISABLE ASYNCHRONOUS HANDLERS
  4635.     AH = 11h
  4636. Return: CF clear
  4637.     AX = previous state
  4638.         0000h async calls were already disabled
  4639.         else  async calls were enabled
  4640. SeeAlso: INT 61"PC/TCP",INT 61/AH=12h
  4641. --------N-6112-------------------------------
  4642. INT 61 - PC/TCP kernel v2.05+ - "enable_async" - ENABLE ASYNCHRONOUS HANDLERS
  4643.     AH = 12h
  4644. Return: CF clear
  4645.     AX = previous state
  4646.         0000h async calls were disabled
  4647.         else  async calls were already enabled
  4648. SeeAlso: INT 61"PC/TCP",INT 61/AH=11h
  4649. --------N-6113-------------------------------
  4650. INT 61 - PC/TCP kernel v2.05 - "net_connect" - OPEN A NETWORK CONNECTION
  4651.     AH = 13h
  4652.     BX = network descriptor (FFFFh for automatic net_getdesc)
  4653.     DX = protocol (see below)
  4654.     DS:SI -> buffer for "addr" structure (see below)
  4655. Return: CF clear if successful
  4656.         AX = network descriptor used or allocated
  4657.     CF set on error
  4658.         AX = error code (see INT 61"PC/TCP")
  4659. Notes:    invokes AH=22h if BX=FFFFh on entry; also invokes AH=19h in various
  4660.       cases
  4661.     will wait for protocol on stream connections unless non-blocking was
  4662.       set with AH=20h
  4663. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=18h,INT 61/AH=23h
  4664. SeeAlso: INT 63/AH=14h"BW-TCP"
  4665.  
  4666. Values for protocol:
  4667.  0001h    raw net (undocumented)
  4668.  0002h    raw IP
  4669.  0003h    datagram (UDP)
  4670.  0004h    stream (TCP)
  4671.  0005h    raw ICMP
  4672.  
  4673. Format of structure "addr":
  4674. Offset    Size    Description
  4675.  00h    DWORD    Internet address (network order)
  4676.  04h    WORD    remote socket number (network order)
  4677.  06h    WORD    local socket number (network order) 0000h means "you choose"
  4678.  08h    BYTE    protocol (see above)
  4679. --------N-6114-------------------------------
  4680. INT 61 Ou - PC/TCP kernel v2.05 - "net_recv" - NO LONGER SUPPORTED
  4681.     AH = 14h
  4682.     BX = network descriptor
  4683. Return: CF set
  4684.         AX = 0018h (see INT 61"PC/TCP")
  4685. Notes:    displays error message "Illegal system call!  Please upgrade your
  4686.       PCserver software" to standard output
  4687.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4688. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=0Ah,INT 61/AH=15h
  4689. --------N-6115-------------------------------
  4690. INT 61 - PC/TCP kernel v2.05 - "net_recvfrom" - ???
  4691.     AH = 15h
  4692.     ???
  4693. Return: ???
  4694. Notes:    this function is described as "unused" in the v2.2 documentation
  4695.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4696. SeeAlso: INT 61/AH=0Bh,INT 61/AH=14h
  4697. --------N-6116-------------------------------
  4698. INT 61 - PC/TCP kernel v2.05+ - "net_peer" - GET DATA ON REMOTE PEER
  4699.     AH = 16h
  4700.     BX = network descriptor
  4701.     DS:DX -> 9-byte buffer for "addr" structure (see AH=13h)
  4702. Return: CF clear if successful
  4703.         buffer filled
  4704.     CF set on error
  4705.         AX = error code (see INT 61"PC/TCP")
  4706. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  4707. --------N-6117-------------------------------
  4708. INT 61 - PC/TCP kernel v2.05+ - "net_reconfig" - RE-READ KERNEL CONFIGURATION
  4709.     AH = 17h
  4710. Return: CF clear if successful
  4711.     CF set on error
  4712.         AX = error code (see INT 61"PC/TCP")
  4713. Notes:    this routine is deprecated in v2.1+ and will eventually be withdrawn;
  4714.       in v2.1+, this function calls AH=01h which should be used instead
  4715.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4716. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  4717. --------N-6118-------------------------------
  4718. INT 61 - PC/TCP kernel v2.05+ - "net_eof" - CLOSE TRANSMIT SIDE OF CONNECTION
  4719.     AH = 18h
  4720.     BX = network descriptor
  4721. Return: CF clear if successful
  4722.     CF set on error
  4723.         AX = error code (see INT 61"PC/TCP")
  4724. Note:    a TCP "FIN" command is sent and no further data may be transmitted,
  4725.       although the connection remains open
  4726. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h"PC/TCP"
  4727. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  4728. --------N-6119-------------------------------
  4729. INT 61 - PC/TCP kernel v2.05+ - "net_abort" - RESET A NETWORK CONNECTION
  4730.     AH = 19h
  4731.     BX = network descriptor
  4732. Return: CF clear if successful
  4733.     CF set on error
  4734.         AX = error code (see INT 61"PC/TCP")
  4735. Desc:    immediately destroys the specified connection
  4736. Note:    send a TCP "RST" command if a stream connection is open
  4737. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=24h
  4738. --------N-611A-------------------------------
  4739. INT 61 - PC/TCP kernel v2.05+ - "net_write" - WRITE TO THE NETWORK
  4740.     AH = 1Ah
  4741.     BX = network descriptor
  4742.     CX = number of bytes to transmit (0000h allowed)
  4743.     DX = send options (see below)
  4744.     DS:SI -> data to be written
  4745. Return: CF clear if successful
  4746.         AX = number of bytes actually written
  4747.         DX = ???
  4748.     CF set on error
  4749.         AX = error code (see INT 61"PC/TCP")
  4750. Notes:    the installation check consists of testing for the signature "TCPTSR"
  4751.       three bytes beyond the start of the interrupt handler
  4752.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  4753.       interrupt from 20h through E0h
  4754. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  4755. SeeAlso: INT 63/AH=19h"BW-TCP",INT 63/AH=1Bh"BW-TCP"
  4756.  
  4757. Bitfields for send options:
  4758.  bit 0    signal "URG"ent data
  4759.  bit 3    attempt rerouting on non-stream calls if first attempt fails
  4760.  bit 4    send data with PUSH flag (no override of Nagle)
  4761.     (see option 0Ch)
  4762.  bit 5    fail rather than truncating datagram
  4763.  bit 6    fail rather than blocking
  4764.  bit 7    broadcast packet
  4765. --------N-611B-------------------------------
  4766. INT 61 - PC/TCP kernel v2.05+ - "net_read" - READ FROM THE NETWORK
  4767.     AH = 1Bh
  4768.     BX = network descriptor
  4769.     CX = maximum number of bytes to read
  4770.     DX = receive options (see below)
  4771.     DS:SI -> buffer for data
  4772.     ES:DI -> "addr" structure (see AH=13h) for remote from which to read
  4773.         0000h:0000h for any
  4774. Return: CF clear if successful
  4775.         AX = number of bytes actually read
  4776.         DX = ???
  4777.     CF set on error
  4778.         AX = error code (see INT 61"PC/TCP")
  4779. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  4780.  
  4781. Bitfields for receive options:
  4782.  bit 1    do not remove data from queue, just copy it
  4783.  bit 2    do not copy data, just remove it from queue
  4784.  bit 5    fail if datagram would be truncated
  4785.  bit 6    do not block, return error if no data available
  4786. Note:    special case for UDP: if both bits 1 and 2 set, return num of datagrams
  4787. --------N-611C-------------------------------
  4788. INT 61 - PC/TCP kernel v2.05+ - "net_writeto" - WRITE A DATAGRAM
  4789.     AH = 1Ch
  4790.     BX = network descriptor
  4791.     CX = number of bytes to transmit (0000h allowed)
  4792.     DX = send options (see AH=1Ah)
  4793.     DS:SI -> data to be written
  4794.     ES:DI -> "addr" structure (see AH=13h)
  4795. Return: CF clear if successful
  4796.         AX = number of bytes actually written
  4797.         DX = ???
  4798.     CF set on error
  4799.         AX = error code (see INT 61"PC/TCP")
  4800. Note:    this function differs from AH=1Ah in that the address and socket
  4801.       numbers can be overridden
  4802. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  4803. SeeAlso: INT 63/AH=21h"BW-TCP"
  4804. --------N-611D-------------------------------
  4805. INT 61 - PC/TCP kernel v2.05+ - "net_readfrom" - READ A DATAGRAM
  4806.     AH = 1Dh
  4807.     BX = network descriptor
  4808.     CX = maximum number of bytes to read
  4809.     DX = receive options (see AH=1Bh)
  4810.     DS:SI -> buffer for received data
  4811.     ES:DI -> 9-byte buffer containing "addr" structure (see AH=13h)
  4812. Return: CF clear if successful
  4813.         AX = number of bytes read
  4814.         DX = ???
  4815.     CF set on error
  4816.         AX = error code (see INT 61"PC/TCP")
  4817. Notes:    this function can read from any host or a designated host depending
  4818.       on settings in the "addr" structure
  4819.     only for use with datagram or Raw descriptors
  4820. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  4821. --------N-611E-------------------------------
  4822. INT 61 - PC/TCP kernel v2.05+ - "net_flush" - FLUSH PENDING DATA
  4823.     AH = 1Eh
  4824.     BX = network descriptor
  4825. Return: CF clear if successful
  4826.     CF set on error
  4827.         AX = error code (see INT 61"PC/TCP")
  4828. Notes:    bufferred data is transmitted immediately, overriding Nagle's algorithm
  4829.       if necessary
  4830.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4831. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  4832. --------N-611F-------------------------------
  4833. INT 61 - PC/TCP kernel v2.05+ - "net_asynch" - SET UP ASYNCHRONOUS CALL-BACK
  4834.     AH = 1Fh
  4835.     BX = network descriptor
  4836.     CX = event type (see below)
  4837.     DS:SI -> event handler routine
  4838.     ES:DI = 32-bit hint passed to handler
  4839. Return: CF clear if successful
  4840.         DS:DX -> previous handler
  4841.     CF set on error
  4842.         AX = error code (see INT 61"PC/TCP")
  4843. Note:    ICMP messages do not trigger events on stream connections
  4844. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  4845.  
  4846. Values for event type:
  4847.  00h    alarm
  4848.  01h    open (successfully opened stream connection)
  4849.  02h    receive (data available)
  4850.  03h    transmit (ACK received on stream connection)
  4851.  04h    transmit flush???
  4852.  05h    foreign close (remote host closed data connection)
  4853.  06h    close (local host closed connection and protocol is complete)
  4854.  07h    error (error code passed to handler as arg)
  4855.  
  4856. Event handler called with:
  4857.     BX = network descriptor
  4858.     CX = event type (see above)
  4859.     DS:DX -> arg
  4860.     ES:DI = 32-bit hint value
  4861.     STACK:    small stack, possibly the DOS stack
  4862. --------N-6120-------------------------------
  4863. INT 61 - PC/TCP kernel v2.05+ - "set_option" - SET AN OPTION ON A DESCRIPTOR
  4864.     AH = 20h
  4865.     BX = network descriptor
  4866.     CX = length of buffer (usually 04h)
  4867.     DS:DX -> buffer containing option
  4868.     SI = (ignored by v2.2-)
  4869.     DI = option to set (see below)
  4870. Return: CF clear if successful
  4871.     CF set on error
  4872.         AX = error code (see INT 61"PC/TCP")
  4873. Note:    Beame&Whiteside's BWPCTCP shim only supports options 01h and 0Bh; all
  4874.       others return CF clear
  4875. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=21h
  4876.  
  4877. Values for option to set:
  4878.  01h    set non-blocking mode if non-zero
  4879.  02h    timeout of call in milliseconds
  4880.  03h    user-defined 4-byte magic cookie (not used by kernel)
  4881.  04h    TCP window or UDP buffer count (WORD, unsigned)
  4882.  06h    do TCP keep-alives if non-zero
  4883.  09h    (v2.1+) set IP precedence
  4884.  0Ah    (v2.1+) set IP type of service
  4885.  0Bh    use a privileged port if port = 0
  4886.  0Ch    turn off TCP PUSH bit and don't flush buffer every write (see AH=1Ah)
  4887. Note:    use "C" true or false values for boolean options
  4888. --------N-6121-------------------------------
  4889. INT 61 - PC/TCP kernel v2.05+ - "get_option" - GET OPTIONS APPLIED TO NET DESCR
  4890.     AH = 21h
  4891.     BX = network descriptor
  4892.     CX = length of buffer
  4893.     DS:DX -> buffer for return values
  4894.     SI = 0004h (ignored by v2.2-)
  4895.     DI = option (see AH=20h)
  4896. Return: CF clear if successful
  4897.         DS:DX -> value (usually 32 bits) returned by selected option
  4898.     CF set on error
  4899.         AX = error code (see INT 61"PC/TCP")
  4900. Note:    not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4901. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=20h
  4902. --------N-6122-------------------------------
  4903. INT 61 u - PC/TCP kernel v2.05+ - "net_getdesc" - ALLOCATE NETWORK DESCRIPTOR
  4904.     AH = 22h
  4905. Return: CF clear if successful
  4906.         AX = network descriptor
  4907.     CF set on error
  4908.         AX = error code (see INT 61"PC/TCP")
  4909. Note:    the descriptor will be an integer in the range 00h-1Fh, and a DOS call
  4910.       is made to allocate this as a file descriptor.  Hence a number may
  4911.       not refer to a PC/TCP network descriptor and a DOS file handle
  4912.       simultaneously.
  4913. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h,INT 61/AH=29h
  4914. --------N-6123-------------------------------
  4915. INT 61 - PC/TCP kernel v2.05+ - "net_listen" - LISTEN FOR INCOMING CONNECTIONS
  4916.     AH = 23h
  4917.     BX = network descriptor or FFFFh to allocate descriptor
  4918.     DX = type of service
  4919.     DS:SI -> "addr" structure (see AH=13h)
  4920. Return: CF clear if successful
  4921.         AX = network descriptor
  4922.     CF set on error
  4923.         AX = error code (see INT 61"PC/TCP")
  4924. Notes:    type of service and "addr" structure are as for AH=13h
  4925.     any of the address structure can be zero; normally local socket number
  4926.       is filled in prior to call
  4927. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h
  4928. SeeAlso: INT 63/AH=12h"BW-TCP"
  4929. --------N-6124-------------------------------
  4930. INT 61 - PC/TCP kernel v2.05+ - "net_abortall" - RESET ALL NETWORK CONNECTIONS
  4931.     AH = 24h
  4932. Return: always successful
  4933. Note:    performs "net_abort" (AH=19h) on all open non-global descriptors
  4934. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=19h
  4935. --------N-6125-------------------------------
  4936. INT 61 - PC/TCP kernel v2.05+ - "ad_res_name" - GET HOST NAME GIVEN ADDRESS
  4937.     AH = 25h
  4938.     DX,BX = IP address in network order
  4939.     CX = length of buffer for name
  4940.     DS:SI -> buffer for host name
  4941. Return: CF clear if successful
  4942.        buffer filled with ASCIZ host name
  4943.     CF set on error
  4944.         AX = error code (see INT 61"PC/TCP")
  4945. Note:    this function will use the host table and or DNS to resolve the
  4946.       address, depending on kernel configuration.  Use this call for the
  4947.       normal gethostbyaddr function.
  4948. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=26h,INT 61/AH=27h
  4949. --------N-6126-------------------------------
  4950. INT 61 - PC/TCP kernel v2.05+ - "ad_htable" - GET HOST NAME FROM LOCAL TABLE
  4951.     AH = 26h
  4952.     DX,BX = IP address in network order
  4953.     CX = length of buffer
  4954.     DS:SI -> buffer for host name
  4955. Return: CF clear if successful
  4956.         buffer filled with ASCIZ host name
  4957.     CF set on error
  4958.         AX = error code (see INT 61"PC/TCP")
  4959. Notes:    normally one would use AH=25h instead of this function
  4960.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4961. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=27h
  4962. --------N-6127-------------------------------
  4963. INT 61 - PC/TCP kernel v2.05+ - "ad_domain" - GET HOST NAME FROM DNS
  4964.     AH = 27h
  4965.     DX,BX = IP address in network order
  4966.     CX = length of buffer
  4967.     DS:SI -> buffer for host name
  4968. Return: CF clear if successful
  4969.         buffer filled with ASCIZ host name
  4970.     CF set on error
  4971.         AX = error code (see INT 61"PC/TCP")
  4972. Note:    normally one would use AH=25h instead of this function
  4973. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=26h
  4974. --------N-6128-------------------------------
  4975. INT 61 - PC/TCP kernel v2.05+ - "net_swap" - EXCHANGE TWO NETWORK DESCRIPTORS
  4976.     AH = 28h
  4977.     BX = network descriptor 1
  4978.     CX = network descriptor 2
  4979. Return: CF clear if successful
  4980.     CF set on error
  4981.         AX = error code (see INT 61"PC/TCP")
  4982. Note:    the two descriptors will exchange places; both must be local or both
  4983.       global
  4984. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  4985. --------N-6129-------------------------------
  4986. INT 61 - PC/TCP kernel v2.05+ - "net_getglobdesc" - ALLOCATE GLOBAL DESCRIPTOR
  4987.     AH = 29h
  4988. Return: CF clear if successful
  4989.         AX = network descriptor
  4990.     CF set on error
  4991.         AX = error code (see INT 61"PC/TCP")
  4992. Note:    use this function rather than AH=22h to avoid a DOS call by the PC/TCP
  4993.       kernel; the returned descriptor will be >= 40h and cannot be used
  4994.       with "net_select" (AH=0Eh)
  4995. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=07h"PC/TCP"
  4996. SeeAlso: INT 61/AH=22h
  4997. --------N-612A-------------------------------
  4998. INT 61 - PC/TCP kernel v2.05+ - GET CONFIGURATION INFORMATION
  4999.     AH = 2Ah
  5000.     DS:SI -> 26-byte buffer for configuration information (see below)
  5001. Return: CF clear
  5002.     AX = 0000h
  5003.     buffer filled
  5004. Notes:    size of buffer may vary with kernel version; 26 bytes is the size for
  5005.       versions 2.05 through 2.2
  5006.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  5007. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5008.  
  5009. Format of configuration information:
  5010. Offset    Size    Description
  5011.  00h    BYTE    maximum TCP connections available
  5012.  01h    BYTE    maximum UDP connections available
  5013.  02h    BYTE    maximum IP connections available
  5014.  03h    BYTE    maximum Raw Net connections available
  5015.  04h    BYTE    number of TCP connections currently in use
  5016.  05h    BYTE    number of UDP connections currently in use
  5017.  06h    BYTE    number of IP connections currently in use
  5018.  07h    BYTE    number of Raw Net connections currently in use
  5019.  08h    WORD    number of local network descriptors active
  5020.  0Ah    WORD    number of global network descriptors active
  5021.  0Ch    BYTE    maximum header size on network
  5022.  0Dh    BYTE    maximum trailer size on network
  5023.  0Eh    WORD    size of large packet buffer
  5024.  10h    WORD    number of network interfaces attached
  5025.  12h    DWORD    milliseconds since kernel started
  5026.  16h    DWORD    IP broadcast address
  5027. --------N-612B-------------------------------
  5028. INT 61 - PC/TCP kernel v2.02+ - "net_alarm" - SET TIMED ASYNCHRONOUS EVENT
  5029.     AH = 2Bh
  5030.     BX = network descriptor
  5031.     CX,DX = time before alarm in milliseconds
  5032.     DS:SI -> handler which will receive call (see INT 61/AH=1Fh)
  5033.     ES:DI = 32-bit cookie passed to handler
  5034. Return: CF clear if successful
  5035.     CF set on error
  5036.         AX = error code (see INT 61"PC/TCP")
  5037. Notes:    this function will case a NET_AS_ALARM to be generated; it is intended
  5038.       for TSRs, etc. to regain control periodically
  5039.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  5040. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5041. --------N-6130-------------------------------
  5042. INT 61 - PC/TCP kernel v2.05+ - "icmp_ping" - SEND ICMP ECHO REQUEST (PING)
  5043.     AH = 30h
  5044.     BX,DX = IP address of host
  5045.     CX = length of data to send
  5046. Return: CF clear if successful (i.e. reply received)
  5047.     CF set on error
  5048.         AX = error code (see INT 61"PC/TCP")
  5049. Note:    not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  5050. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5051. --------N-61---------------------------------
  5052. INT 61 u - PC/TCP kernel v2.05 - NOP for SLIP kernel
  5053.     AH = function
  5054.         31h "net_add_route"
  5055.         32h "net_del_route"
  5056.         33h "net_dump_routes"
  5057. Notes:    these functions are described as "unused" in the v2.2 documentation
  5058.     router configuration can be altered using INT 61/AH=01h
  5059.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  5060. --------N-6134-------------------------------
  5061. INT 61 U - PC/TCP kernel v2.1+ - "icmp_destun" - ???
  5062.     AH = 34h
  5063.     ???
  5064. Return: ???
  5065. Notes:    this function is described as "reserved" in the v2.2 documentation
  5066.     not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  5067. --------N-6150-------------------------------
  5068. INT 61 - PC/TCP kernel v2.05+ - "nm_prs_addr" - TRANSLATE NUMERICAL IP ADDRESS
  5069.     AH = 50h
  5070.     DS:DX -> ASCIZ IP address as "dotted quad" (max 127 chars)
  5071. Return: CF clear if successful
  5072.         DX:AX -> IP address
  5073.     CF set on error
  5074.         AX = error code (see INT 61"PC/TCP")
  5075. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  5076. --------N-6151-------------------------------
  5077. INT 61 - PC/TCP kernel v2.05+ - "nm_htable" - RESOLVE NAME USING HOST TABLE
  5078.     AH = 51h
  5079.     CX = size of destination buffer
  5080.     DS:DX -> ASCIZ host name (max 127 chars)
  5081.     ES:DI -> destination buffer or 0000h:0000h
  5082. Return: CF clear if successful
  5083.         DX:AX -> IP address of host
  5084.         destination buffer filled with canonical host name
  5085.     CF set on error
  5086.         AX = error code (see INT 61"PC/TCP")
  5087. Note:    this function calls DOS, and can fail if the DOS call fails
  5088. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  5089. --------N-6152-------------------------------
  5090. INT 61 - PC/TCP kernel v2.05+ - "nm_domain" - RESOLVE NAME USING DNS
  5091.     AH = 52h
  5092.     CX = size of destination buffer
  5093.     DS:DX -> ASCIZ host name (max 127 chars)
  5094.     ES:DI -> destination buffer or 0000h:0000h
  5095. Return: CF clear if successful
  5096.         DX:AX -> IP address of host
  5097.         destination buffer filled with canonical host name
  5098.     CF set on error
  5099.         AX = error code (see INT 61"PC/TCP")
  5100. Note:    this function will poll all configured domain name servers if necessary
  5101. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  5102. --------N-6153-------------------------------
  5103. INT 61 - PC/TCP kernel v2.05- - "nm_ien116" - RESOLVE HOST NAME USING IEN116
  5104.     AH = 53h
  5105.     DS:DX -> ASCIZ name to be resolved (max 127 chars)
  5106. Return: CF clear if successful
  5107.         DX:AX -> IP address of host
  5108.     CF set on error
  5109.         AX = error code (see INT 61"PC/TCP")
  5110. Note:    this function is not supported by v2.10+
  5111. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  5112. --------N-6154-------------------------------
  5113. INT 61 - PC/TCP kernel v2.05+ - "nm_res_name" - RESOLVE HOST NAME
  5114.     AH = 54h
  5115.     CX = size of destination buffer
  5116.     DS:DX -> ASCIZ host name (max 127 chars)
  5117.     ES:DI -> destination buffer or 0000h:0000h
  5118. Return: CF clear if successful
  5119.         DX:AX -> IP address of host
  5120.         destination buffer filled with canonical host name
  5121.     CF set on error
  5122.         AX = error code (see INT 61"PC/TCP")
  5123. Note:    this function uses all configured methods in turn to resolve the
  5124.       name (numerical, then host table, then DNS, then IEN116)
  5125. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  5126.       greater than 54h in AH may crash the system.    Other kernels may have
  5127.       this bug as well; it has been fixed in the v2.2 SLIPDRV kernel.
  5128. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=50h,INT 61/AH=51h
  5129. SeeAlso: INT 61/AH=52h,INT 61/AH=53h
  5130. --------*-62---------------------------------
  5131. INT 62 - reserved for user interrupt
  5132. --------d-62---------------------------------
  5133. INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
  5134. Notes:    this vector stores the third four bytes of the parameter table for
  5135.       hard disk 0
  5136. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
  5137. --------b-62---------------------------------
  5138. INT 62 - HP 95LX - USED BY CALCULATOR
  5139. SeeAlso: INT 60"HP 95LX"
  5140. ----------62---------------------------------
  5141. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???
  5142.     AH = function (00h to 07h)
  5143.     CX = FFFEh
  5144.     DX = FFFFh
  5145.     ???
  5146. Return: ???
  5147. Note:    the installation check consists of testing for the string "DBLIBRARY"
  5148.       2 bytes past the interrupt handler
  5149. SeeAlso: AH=08h"SQL"
  5150. Index:    installation check;MS SQL Server|installation check;Sybase DBLIBRARY
  5151. --------N-62---------------------------------
  5152. INT 62 - BW-TCP - HARDWARE DRIVER (ETHDEV.SYS) - API
  5153.     AH = function
  5154.         00h get physical hardware address
  5155.         DS:DX -> 6-byte buffer for address
  5156.         01h NOP for ETHDEV.ODI
  5157.         02h initialize
  5158.         03h get real IP address
  5159.         DS:SI -> DWORD buffer for IP address
  5160.         04h ???
  5161.         05h ???
  5162.         06h ???
  5163.         07h ???
  5164.         DS:SI -> ???
  5165.         08h ???
  5166.         CX = ???
  5167.         ES:SI -> func08 buffer
  5168.         09h hook timer interrupt
  5169.         Return: AX = handler ID if successful
  5170.         0Ah unhook timer interrupt
  5171.         DX = handler ID
  5172.         0Bh add ???
  5173.         AL = ???
  5174.         DX = ???
  5175.         BP = ???
  5176.         ES:SI -> ???
  5177.         0Ch remove ???
  5178.         DX = ???
  5179.         BP = ???
  5180.         0Dh NOP for ETHDEV.ODI
  5181.         0Eh begin critical section
  5182.         0Fh end critical section
  5183.         10h query critical section
  5184.         Return: CF clear if no critical section active
  5185.             CF set if in critical section
  5186.         11h set ???
  5187.         ES:SI -> ???
  5188.         Return: CF clear
  5189.         12h get ?
  5190.         Return: AX = ??? (memory variable incremented after reading)
  5191.         13h ???
  5192.         CX = ???
  5193.         Return: AL = 00h if CF clear
  5194.         14h ???
  5195.         ES:SI -> ???
  5196.         Return: AL = 00h if CF clear
  5197.         15h get ??? (call after reading ETHDEV27 device)
  5198.         16h ???
  5199.         17h ???
  5200.         DX = segment of ???
  5201.         Return: Cf clear
  5202.         18h allocate and map EMS for driver
  5203.         Note: calls function 17h after EMS allocated and mapped
  5204.         FEh map EMS
  5205.         00h map in driver's memory
  5206.         01h map out driver's memory
  5207. Return: CF clear if successful
  5208.     CF set on error
  5209.         AL = error code
  5210. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5211.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5212.       consecutive interrupt (64h by default) if it is loaded
  5213. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5214.  
  5215. Format of func08 buffer:
  5216. Offset    Size    Description
  5217.  00h  6 BYTEs    hardware address???
  5218.  06h  6 BYTEs    ???
  5219.  0Ch    WORD    ???
  5220.  0Eh    WORD    ???
  5221. --------V-620000-----------------------------
  5222. INT 62 u - FGDRIVER v1.10 - "FG_GETMODE" - GET CURRENT VIDEO MODE NUMBER
  5223.     AX = 0000h
  5224.     ES:BX -> ???
  5225. Return: AX = current video mode number
  5226. Notes:    FGDRIVER is the external video driver for the shareware
  5227.       Fastgraph/Light by Ted Gruber Software
  5228.     the installation check consists of testing for the signature "FG" ten
  5229.       bytes beyond the start of the interrupt handler
  5230. SeeAlso: AX=0001h,AX=0006h
  5231. Index:    installation check;Fastgraph/Light
  5232. --------V-620001-----------------------------
  5233. INT 62 u - FGDRIVER v1.10 - "FG_SETMODE" - SELECT VIDEO MODE AND INITIALIZE
  5234.     AX = 0001h
  5235.     BX = new video mode or FFFFh for current mode
  5236.     ES:DX -> ???
  5237. Notes:    video modes are the same as the BIOS video modes except for
  5238.         0Bh Hercules graphics 720x348
  5239.         0Ch Hercules graphics 320x200
  5240.         15h VGA graphics 320x400x256
  5241.         16h VGA graphics 320x240x256
  5242.         17h VGA graphics 320x480x256
  5243.     this call resets the active video page to page 0000h, the clipping
  5244.       region to the entire screen, text rows to 25, etc.
  5245. SeeAlso: AX=0000h,AX=0002h,INT 10/AH=00h
  5246. --------V-620002-----------------------------
  5247. INT 62 u - FGDRIVER v1.10 - "FG_TESTMODE" - CHECK IF VIDEO MODE AVAILABLE
  5248.     AX = 0002h
  5249.     BX = desired video mode (00h-17h)
  5250.     CX = required number of video pages (ignore memory size if <= 0)
  5251. Return: AX = status
  5252.         0000h mode not available with requested number of pages
  5253.         0001h mode is available
  5254. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0005h
  5255. --------V-620003-----------------------------
  5256. INT 62 u - FGDRIVER v1.10 - "FG_BESTMODE" - GET BEST VIDEO MODE GIVEN RESOLUTN
  5257.     AX = 0003h
  5258.     BX = horizontal resolution
  5259.     CX = vertical resolution
  5260.     DX = number of video pages required (both physical and virtual)
  5261. Return: AX = proposed video mode number or FFFFh if no matching video mode
  5262. SeeAlso: AX=0002h,AX=0004h
  5263. --------V-620004-----------------------------
  5264. INT 62 u - FGDRIVER v1.10 - "FG_AUTOMODE" - GET VIDEO MODE WITH MOST FEATURES
  5265.     AX = 0004h
  5266. Return: AX = proposed video mode number
  5267. Note:    FGDRIVER is the external video driver for the shareware
  5268.       Fastgraph/Light by Ted Gruber Software
  5269. SeeAlso: AX=0002h,AX=0003h,AX=0005h
  5270. --------V-620005-----------------------------
  5271. INT 62 u - FGDRIVER v1.10 - "FG_EGACHECK" - GET INFO ABOUT ACTIVE EGA DISPLAY
  5272.     AX = 0005h
  5273. Return: AX = number of 64K banks of video memory, or 0000h if no EGA or EGA
  5274.         without an Enhanced Color Display
  5275. SeeAlso: AX=0002h,AX=0003h
  5276. --------V-620006-----------------------------
  5277. INT 62 u - FGDRIVER v1.10 - "FG_RESET" - ERASE SCREEN AND RESTORE SCREEN ATTR
  5278.     AX = 0006h
  5279. Notes:    this call is ignored in graphics modes
  5280.     the screen attributes are only restored if ANSI.SYS is loaded
  5281. SeeAlso: AX=0000h
  5282. --------V-620007-----------------------------
  5283. INT 62 u - FGDRIVER v1.10 - "FG_CURSOR" - SPECIFY WHETHER TEXT CURSR IS VISIBLE
  5284.     AX = 0007h
  5285.     BX = new state (0000h invisible, 0001h visible)
  5286. Note:    this call is ignored in text modes
  5287. --------V-620008-----------------------------
  5288. INT 62 - FGDRIVER v1.10 - UNUSED
  5289.     AX = 0008h to 0009h
  5290. Return: AX = 0000h
  5291. --------V-62000A-----------------------------
  5292. INT 62 u - FGDRIVER v1.10 - "FG_GETMAXX" - GET MAXIMUM COLUMN IN SCREEN SPACE
  5293.     AX = 000Ah
  5294. Return: AX = maximum X coordinate in screen space
  5295.         (or character space if in text mode)
  5296. SeeAlso: AX=000Bh,AX=0045h
  5297. --------V-62000B-----------------------------
  5298. INT 62 u - FGDRIVER v1.10 - "FG_GETMAXY" - GET MAXIMUM ROW IN SCREEN SPACE
  5299.     AX = 000Bh
  5300. Return: AX = maximum Y coordinate in screen space
  5301.         (or character space if in text mode)
  5302. SeeAlso: AX=000Ah,AX=0045h
  5303. --------V-62000C-----------------------------
  5304. INT 62 u - FGDRIVER v1.10 - "FG_XALPHA" - CONVERT SCREEN COLUMN TO CHAR COLUMN
  5305.     AX = 000Ch
  5306.     BX = screen space column
  5307. Return: AX = character space column containing specified coordinate
  5308. SeeAlso: AX=000Dh,AX=000Eh
  5309. --------V-62000D-----------------------------
  5310. INT 62 u - FGDRIVER v1.10 - "FG_YALPHA" - CONVERT SCREEN ROW TO CHARACTER ROW
  5311.     AX = 000Dh
  5312.     BX = screen space row
  5313. Return: AX = character space row containing specified coordinate
  5314. SeeAlso: AX=000Ch,AX=000Fh
  5315. --------V-62000E-----------------------------
  5316. INT 62 u - FGDRIVER v1.10 - "FG_XCONVERT" - CONVERT CHAR COLUMN TO SCREEN COL
  5317.     AX = 000Eh
  5318.     BX = character space column
  5319. Return: AX = screen space column of leftmost pixel in specified character col
  5320. SeeAlso: AX=000Ch,AX=000Fh
  5321. --------V-62000F-----------------------------
  5322. INT 62 u - FGDRIVER v1.10 - "FG_YCONVERT" - CONVERT CHARACTER ROW TO SCREEN ROW
  5323.     AX = 000Fh
  5324.     BX = character space row
  5325. Return: AX = screen space row of topmost pixel in specified character row
  5326. SeeAlso: AX=000Dh,AX=000Eh
  5327. --------V-620010-----------------------------
  5328. INT 62 u - FGDRIVER v1.10 - "FG_GETLINES" - GET TEXT ROWS FOR CURR VIDEO MODE
  5329.     AX = 0010h
  5330. Return: AX = number of text rows on screen in current video mode
  5331. SeeAlso: AX=0011h
  5332. --------V-620011-----------------------------
  5333. INT 62 u - FGDRIVER v1.10 - "FG_SETLINES" - SET TEXT ROWS ON SCREEN
  5334.     AX = 0011h
  5335.     BX = new screen size (25, 43, 50)
  5336. SeeAlso: AX=0010h
  5337. --------V-620012-----------------------------
  5338. INT 62 - FGDRIVER v1.10 - UNUSED
  5339.     AX = 0012h to 0013h
  5340. Return: AX = 0000h
  5341. --------V-620014-----------------------------
  5342. INT 62 u - FGDRIVER v1.10 - "FG_DEFCOLOR" - ASSIGN COLOR VALUE TO COLOR INDEX
  5343.     AX = 0014h
  5344.     BX = color index (0000h-00FFh)
  5345.     CX = new color value (0 to maximum color value for current video mode)
  5346. Note:    this call is ignored in text modes and 256-color graphics modes
  5347. SeeAlso: AX=0015h,AX=0016h,AX=001Dh
  5348. --------V-620015-----------------------------
  5349. INT 62 u - FGDRIVER v1.10 - "FG_GETCOLOR" - GET CURRENT TEXT ATTRIBUTE
  5350.     AX = 0015h
  5351. Return: AX = current text attribute or color index (graphics modes)
  5352. Note:    FGDRIVER is the external video driver for the shareware
  5353.       Fastgraph/Light by Ted Gruber Software
  5354. SeeAlso: AX=0019h,AX=001Ah
  5355. --------V-620016-----------------------------
  5356. INT 62 u - FGDRIVER v1.10 - "FG_GETINDEX" - GET COLOR VALUE FOR COLOR INDEX
  5357.     AX = 0016h
  5358.     BX = color index (0000h to 00FFh)
  5359. Return: AX = color value for specified color index
  5360. Note:    this call returns the value passed to it in text and 256-color
  5361.       graphics modes
  5362. SeeAlso: AX=0014h,AX=001Ch
  5363. --------V-620017-----------------------------
  5364. INT 62 u - FGDRIVER v1.10 - "FG_PALETTE" - SET PALETTE / SET VIDEO DAC REGISTER
  5365.     AX = 0017h
  5366. ---CGA 4-color graphics---
  5367.     BX = CGA paletee number
  5368.     CX = background color
  5369. ---CGA 2-color graphics---
  5370.     BX ignored
  5371.     CX = foreground color
  5372. ---16-color graphics---
  5373.     BX = palette register number
  5374.     CX = palette value
  5375. ---256-color graphics---
  5376.     BX = DAC register number
  5377.     CX =  DAC value
  5378. Notes:    ignored in text modes and Hercules graphics modes
  5379.     few EGA/VGA adapters correctly set the foreground color in CGA mode 6
  5380. SeeAlso: AX=0018h,AX=001Dh
  5381. --------V-620018-----------------------------
  5382. INT 62 u - FGDRIVER v1.10 - "FG_PALETTES" - SET ALL PALETTE REGISTERS
  5383.     AX = 0018h
  5384.     ES:BX -> array of 16 WORDs containing values for palette registers
  5385.         (or first 16 DAC registers in 256-color modes)
  5386. Note:    ignored in text modes, CGA and Hercules graphics modes
  5387. SeeAlso: AX=0017h
  5388. --------V-620019-----------------------------
  5389. INT 62 u - FGDRIVER v1.10 - "FG_SETATTR" - SET TEXT-MODE CHARACTER ATTRIBUTE
  5390.     AX = 0019h
  5391.     BX = foreground
  5392.     CX = background
  5393.     DX = blink (0000h nonblinking, 0001h blink)
  5394. Note:    this call is ignored in graphics modes
  5395. SeeAlso: AX=0015h,AX=001Ah,AX=0037h
  5396. --------V-62001A-----------------------------
  5397. INT 62 u - FGDRIVER v1.10 - "FG_SETCOLOR" - SET CURRENT COLOR
  5398.     AX = 001Ah
  5399.     BX = new color index (or text attribute in text modes)
  5400. SeeAlso: AX=0015h,AX=0019h
  5401. --------V-62001B-----------------------------
  5402. INT 62 u - FGDRIVER v1.10 - "FG_SETRGB" - SET VIDEO DAC REGISTER CONTENTS
  5403.     AX = 001Bh
  5404.     BX = palette or DAC register number
  5405.     CX = red color component
  5406.     DX = green component
  5407.     SI = blue component
  5408. Notes:    the register number may be negative for Tandy, PCjr, and 200-line
  5409.       EGA graphics modes to specify an intense color
  5410.     this call has no effect in text, CGA graphics, and Hercules graphics
  5411.       modes
  5412. SeeAlso: AX=001Ch,AX=00A5h
  5413. --------V-62001C-----------------------------
  5414. INT 62 u - FGDRIVER v1.10 - "FG_GETRGB" - GET VIDEO DAC REGISTER CONTENTS
  5415.     AX = 001Ch
  5416.     ES:BX -> variable pointer record (see below)
  5417.     CX = DAC register number
  5418. Return: variables updated
  5419. Note:    this call is ignored in text modes and CGA/EGA video modes (since
  5420.       they do not use DAC registers)
  5421. SeeAlso: AX=001Bh,AX=001Dh,AX=00A4h
  5422.  
  5423. Format of variable pointer record:
  5424. Offset    Size    Description
  5425.  00h    WORD    segment of WORD buffer for red component of DAC register
  5426.  02h    WORD    offset of WORD buffer for red component
  5427.  04h    WORD    segment of WORD buffer for green component of DAC register
  5428.  06h    WORD    offset of WORD buffer for green component
  5429.  08h    WORD    segment of WORD buffer for blue component of DAC register
  5430.  0Ah    WORD    offset of WORD buffer for blue component
  5431. --------V-62001D-----------------------------
  5432. INT 62 u - FGDRIVER v1.10 - "FG_MAPRGB" - MAP COLOR COMPONENTS INTO PALETTE VAL
  5433.     AX = 001Dh
  5434.     BX = red component
  5435.     CX = green component
  5436.     DX = blue component
  5437. Return: AX = mode-specific palette value corresponding to specified components
  5438. Note:    only meaningful in 16-color graphics modes
  5439. SeeAlso: AX=0015h,AX=0017h
  5440. --------V-62001E-----------------------------
  5441. INT 62 u - FGDRIVER v1.10 - "FG_ERASE" - CLEAR THE ACTIVE VIDEO PAGE
  5442.     AX = 001Eh
  5443. Note:    sets each pixel to 0 in graphics modes, each character cell to a blank
  5444.       with a gray foreground attribute in text modes
  5445. --------V-62001F-----------------------------
  5446. INT 62 u - FGDRIVER v1.10 - "FG_POINT" - DISPLAY A PIXEL
  5447.     AX = 001Fh
  5448.     BX = column
  5449.     CX = row
  5450. Note:    this call is ignored in text modes
  5451. SeeAlso: AX=0020h
  5452. --------V-620020-----------------------------
  5453. INT 62 u - FGDRIVER v1.10 - "FG_GETPIXEL" - GET COLOR OF SPECIFIED PIXEL
  5454.     AX = 0020h
  5455.     BX = column in screen space
  5456.     CX = row in screen space
  5457. Return: AX = color value of pixel (0 to num_colors-1)
  5458.         0000h in text modes
  5459. SeeAlso: AX=001Fh
  5460. --------V-620021-----------------------------
  5461. INT 62 u - FGDRIVER v1.10 - "FG_GETXPOS" - GET GRAPHICS CURSOR COLUMN
  5462.     AX = 0021h
  5463. Return: AX = screen space X coordinate of graphics cursor position
  5464. SeeAlso: AX=0022h,AX=0023h,AX=0024h
  5465. --------V-620022-----------------------------
  5466. INT 62 u - FGDRIVER v1.10 - "FG_GETXPOS" - GET GRAPHICS CURSOR ROW
  5467.     AX = 0022h
  5468. Return: AX = screen space Y coordinate of graphics cursor position
  5469. SeeAlso: AX=0021h,AX=0023h,AX=0024h
  5470. --------V-620023-----------------------------
  5471. INT 62 u - FGDRIVER v1.10 - "FG_MOVE" - SET GRAPHICS CURSOR POSITION
  5472.     AX = 0023h
  5473.     BX = new column
  5474.     CX = new row
  5475. Note:    this call is ignored in text modes
  5476. SeeAlso: AX=0021h,AX=0022h,AX=0024h
  5477. --------V-620024-----------------------------
  5478. INT 62 u - FGDRIVER v1.10 - "FG_MOVEREL" - ADJUST GRAPHICS CURSOR POSITION
  5479.     AX = 0024h
  5480.     BX = column offset
  5481.     CX = row offset
  5482. Note:    this call is ignored in text modes
  5483. SeeAlso: AX=0021h,AX=0022h,AX=0023h
  5484. --------V-620025-----------------------------
  5485. INT 62 u - FGDRIVER v1.10 - "FG_DRAW" - DRAW SOLID LINE TO ABSOLUTE POSITION
  5486.     AX = 0025h
  5487.     BX = endpoint column
  5488.     CX = endpoint row
  5489. Notes:    this call is ignored in text modes
  5490.     the starting point is the current graphics cursor position; the cursor
  5491.       position is updated
  5492. SeeAlso: AX=0026h,AX=0027h
  5493. --------V-620026-----------------------------
  5494. INT 62 u - FGDRIVER v1.10 - "FG_DRAWREL" - DRAW SOLID LINE TO RELATIVE POSITION
  5495.     AX = 0026h
  5496.     BX = endpoint column offset
  5497.     CX = endpoint row offset
  5498. Notes:    this call is ignored in text modes
  5499.     the starting point is the current graphics cursor position; the cursor
  5500.       position is updated
  5501. SeeAlso: AX=0025h,AX=0028h
  5502. --------V-620027-----------------------------
  5503. INT 62 u - FGDRIVER v1.10 - "FG_DASH" - DRAW DASHED LINE TO ABSOLUTE POSITION
  5504.     AX = 0027h
  5505.     BX = endpoint column
  5506.     CX = endpoint row
  5507.     DX = dash pattern (set bits cause drawn pixels)
  5508. Notes:    this call is ignored in text modes
  5509.     the starting point is the current graphics cursor position; the cursor
  5510.       position is updated
  5511. SeeAlso: AX=0025h,AX=0028h
  5512. --------V-620028-----------------------------
  5513. INT 62 u - FGDRIVER v1.10 - "FG_DASHREL" - DRAW DASHED LINE TO RELATVE POSITION
  5514.     AX = 0028h
  5515.     BX = endpoint column offset
  5516.     CX = endpoint row offset
  5517.     DX = dash pattern (set bits cause drawn pixels)
  5518. Notes:    this call is ignored in text modes
  5519.     the starting point is the current graphics cursor position; the cursor
  5520.       position is updated
  5521. SeeAlso: AX=0026h,AX=0027h
  5522. --------V-620029-----------------------------
  5523. INT 62 u - FGDRIVER v1.10 - "FG_SETCLIP" - SET CLIPPING REGION
  5524.     AX = 0029h
  5525.     BX = left edge of clipping region
  5526.     CX = right edge of clipping region
  5527.     DX = top edge of clipping region
  5528.     SI = bottom edge of clipping region
  5529. SeeAlso: AX=004Ah,AX=004Ch,AX=0052h,AX=0054h
  5530. --------V-62002A-----------------------------
  5531. INT 62 u - FGDRIVER v1.10 - "FG_RECT" - DRAW UNFILLED RECTANGLE IN SCREEN SPACE
  5532.     AX = 002Ah
  5533.     BX = left edge column
  5534.     CX = right edge column
  5535.     DX = top edge row
  5536.     SI = bottom edge row
  5537. SeeAlso: AX=002Bh,AX=002Ch,AX=002Eh,AX=00A2h
  5538. --------V-62002B-----------------------------
  5539. INT 62 u - FGDRIVER v1.10 - "FG_CLPRECT" - DRAW FILLED RECTANGLE IN SCREEN SPCE
  5540.     AX = 002Bh
  5541.     BX = screen space column of left edge
  5542.     CX = screen space column of right edge
  5543.     DX = screen space row of top edge
  5544.     SI = screen space row of bottom edge
  5545. Note:    this call is ignored in text modes
  5546. SeeAlso: AX=002Ah,AX=002Ch,AX=00A2h
  5547. --------V-62002C-----------------------------
  5548. INT 62 u - FGDRIVER v1.10 - "FG_DRECT" - DRAW DITHERED RECTANGLE IN SCRN SPACE
  5549.     AX = 002Ch
  5550.     BX = screen space column of left edge
  5551.     CX = screen space column of right edge
  5552.     DX = screen space row of top edge
  5553.     SI = screen space row of bottom edge
  5554.     ES:DI -> dithering matrix (video-mode dependent)
  5555. Note:    this call is ignored in text modes
  5556. SeeAlso: AX=002Bh,AX=00A2h
  5557. --------V-62002D-----------------------------
  5558. INT 62 u - FGDRIVER v1.10 - "FG_ELLIPSE" - DRAW UNFILLED ELLIPSE IN SCRN SPACE
  5559.     AX = 002Dh
  5560.     BX = horizontal semi-axis length in screen space units
  5561.     CX = vertical semi-axis length in screen space units
  5562. Notes:    this call is ignored in text modes
  5563.     the ellipse is centered at the current graphics cursor position
  5564. SeeAlso: AX=002Ah,AX=002Eh,AX=00A2h
  5565. --------V-62002E-----------------------------
  5566. INT 62 u - FGDRIVER v1.10 - "FG_POLYGON" - DRAW AN UNFILLED POLYGON
  5567.     AX = 002Eh
  5568.     CX = number of vertices in polygon
  5569.     ES:BX -> variable pointer record (see below)
  5570. SeeAlso: AX=002Dh,AX=0030h,AX=00A2h
  5571.  
  5572. Format of variable pointer record:
  5573. Offset    Size    Description
  5574.  00h    WORD    segment of WORD array containing vertex columns
  5575.  02h    WORD    offset of WORD array containing vertex columns
  5576.  04h    WORD    segment of WORD array containing vertex rows
  5577.  06h    WORD    offset of WORD array containing vertex rows
  5578. --------V-62002F-----------------------------
  5579. INT 62 u - FGDRIVER v1.10 - "FG_PAINT" - FLOOD CLOSED REGION WITH COLOR
  5580.     AX = 002Fh
  5581.     BX = column
  5582.     CX = row
  5583. Notes:    fills an arbitrary closed region around the specified point with the
  5584.       current color; the screen edges are not considered region boundaries
  5585.     ignored in text modes
  5586. --------V-620030-----------------------------
  5587. INT 62 u - FGDRIVER v1.10 - "FG_CIRCLE" - DRAW UNFILLED CIRCLE
  5588.     AX = 0030h
  5589.     BX = radius in horizontal screen space units (> 0)
  5590. Notes:    the circle is drawn in screen space, centered at the current graphics
  5591.       cursor position
  5592.     this call is ignored in text modes
  5593. SeeAlso: AX=00A2h
  5594. --------V-620031-----------------------------
  5595. INT 62 - FGDRIVER v1.10 - UNUSED
  5596.     AX = 0031h
  5597. Return: AX = 0000h
  5598. --------V-620032-----------------------------
  5599. INT 62 u - FGDRIVER v1.10 - "FG_TEXT" - DISPLAY STRING OF CHARACTERS
  5600.     AX = 0032h
  5601.     CX = length of string
  5602.     ES:BX -> string
  5603. Notes:    the string is displayed staring at the text cursor position using the
  5604.       current text attribute (text modes) or color index (graphics modes)
  5605.     the text cursor position is updated after this call
  5606. SeeAlso: AX=001Ah,AX=0033h,AX=0035h,AX=0036h
  5607. --------V-620033-----------------------------
  5608. INT 62 u - FGDRIVER v1.10 - "FG_LOCATE" - SET TEXT-MODE CURSOR POSITION
  5609.     AX = 0033h
  5610.     BX = row
  5611.     CX = column
  5612. Note:    there are only eight text cursors shared by successive groups of
  5613.       eight video pages (pages 0, 8, 16, ... share one cursor, 1, 9, ...
  5614.       share the second, etc)
  5615. SeeAlso: AX=0034h
  5616. --------V-620034-----------------------------
  5617. INT 62 u - FGDRIVER v1.10 - "FG_WHERE" - GET CURRENT CURSOR POSITION
  5618.     AX = 0034h
  5619.     ES:BX -> variable pointers (see below)
  5620. Return: indicated variables filled with cursor row and column for active
  5621.       display
  5622. Note:    FGDRIVER is the external video driver for the shareware
  5623.       Fastgraph/Light by Ted Gruber Software
  5624. SeeAlso: AX=0033h
  5625.  
  5626. Format of variable pointers:
  5627. Offset    Size    Description
  5628.  00h    WORD    segment of WORD buffer for cursor row
  5629.  02h    WORD    offset of WORD buffer for cursor row
  5630.  04h    WORD    segment WORD buffer for cursor column
  5631.  06h    WORD    offset WORD buffer for cursor column
  5632. --------V-620035-----------------------------
  5633. INT 62 u - FGDRIVER v1.10 - "FG_CHGATTR" - APPLY CURRENT TEXT ATTRIB TO CHARS
  5634.     AX = 0035h
  5635.     BX = number of characters to recolor
  5636. Notes:    this call is ignored in graphics modes
  5637.     starting at the current text cursor position, the specified number of
  5638.       characters have their attributes to the current text attribute
  5639. SeeAlso: AX=0036h
  5640. --------V-620036-----------------------------
  5641. INT 62 u - FGDRIVER v1.10 - "FG_CHGTEXT" - DISPLAY STRING AT CURSOR POSITION
  5642.     AX = 0036h
  5643.     CX = length of string
  5644.     ES:BX -> string to be displayed
  5645. Return: text cursor updated
  5646. Note:    this call is ignored in graphics modes
  5647. SeeAlso: AX=0032h,AX=0035h
  5648. --------V-620037-----------------------------
  5649. INT 62 u - FGDRIVER v1.10 - "FG_GETATTR" - GET CHARACTER ATTRIB FOR POSITION
  5650.     AX = 0037h
  5651.     BX = row
  5652.     CX = column
  5653. Return: AX = character attribute at specified location on active video page
  5654. Note:    this call is ignored in graphics modes
  5655. SeeAlso: AX=0019h,AX=0038h
  5656. --------V-620038-----------------------------
  5657. INT 62 u - FGDRIVER v1.10 - "FG_GETCHAR" - GET CHARACTER FOR SCREEN POSITION
  5658.     AX = 0038h
  5659.     BX = row
  5660.     CX = column
  5661. Return: AX = character at specified location on active video page
  5662. Note:    this call is ignored in graphics modes
  5663. SeeAlso: AX=0037h
  5664. --------V-620039-----------------------------
  5665. INT 62 - FGDRIVER v1.10 - UNUSED
  5666.     AX = 0039h to 003Bh
  5667. Return: AX = 0000h
  5668. --------V-62003C-----------------------------
  5669. INT 62 u - FGDRIVER v1.10 - "FG_GETPAGE" - GET ACTIVE VIDEO PAGE NUMBER
  5670.     AX = 003Ch
  5671. Return: AX = active video page (0000h-003Fh)
  5672. SeeAlso: AX=003Dh,AX=003Eh,AX=0040h
  5673. --------V-62003D-----------------------------
  5674. INT 62 u - FGDRIVER v1.10 - "FG_SETPAGE" - SET ACTIVE VIDEO PAGE
  5675.     AX = 003Dh
  5676.     BX = new video page (0000h to 003Fh)
  5677. Note:    the specified page must be a physical or virtual page
  5678. SeeAlso: AX=0001h,AX=003Ch,AX=003Fh,AX=0041h
  5679. --------V-62003E-----------------------------
  5680. INT 62 u - FGDRIVER v1.10 - "FG_GETVPAGE" - GET VISIBLE VIDEO PAGE NUMBER
  5681.     AX = 003Eh
  5682. Return: AX = visible video page (0000h-003Fh)
  5683. SeeAlso: AX=003Ch,AX=003Fh,AX=0040h
  5684. --------V-62003F-----------------------------
  5685. INT 62 u - FGDRIVER v1.10 - "FG_SETVPAGE" - SET VISIBLE VIDEO PAGE
  5686.     AX = 003Fh
  5687.     BX = new video page (0000h to 003Fh)
  5688. Note:    the specified page must be a physical or virtual page
  5689. SeeAlso: AX=0001h,AX=003Dh,AX=003Eh,AX=0041h
  5690. --------V-620040-----------------------------
  5691. INT 62 u - FGDRIVER v1.10 - "FG_GETHPAGE" - GET CURRENT HIDDEN VIDEO PAGE NUM
  5692.     AX = 0040h
  5693. Return: AX = current hidden video page number (0000h-003Fh)
  5694. SeeAlso: AX=003Ch,AX=003Eh,AX=0041h
  5695. --------V-620041-----------------------------
  5696. INT 62 u - FGDRIVER v1.10 - "FG_SETHPAGE" - SET HIDDEN VIDEO PAGE
  5697.     AX = 0041h
  5698.     BX = new hidden page (0000h to 003Fh)
  5699. Note:    specified page must be a physical page or a virtual page
  5700. SeeAlso: AX=003Dh,AX=003Fh,AX=0040h
  5701. --------V-620042-----------------------------
  5702. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCATE" - CREATE VIRTUAL VIDEO PAGE
  5703.     AX = 0042h
  5704.     BX = page number (0000h-003Fh)
  5705. Return: AX = status (0000h,0001h,0007h,0008h) (see below)
  5706. Notes:    FGDRIVER is the external video driver for the shareware
  5707.       Fastgraph/Light by Ted Gruber Software
  5708.     the amount of memory required by the virtual video page depends on the
  5709.       current video mode
  5710. SeeAlso: AX=0043h,AX=009Dh,AX=009Fh
  5711.  
  5712. Values for status:
  5713.  0000h    successful
  5714.  0001h    specified page is a physical or logical page
  5715.  0007h    virtual page created/released, but memory control blocks corrupted
  5716.  0008h    not enough memory
  5717.  0009h    attempt to free a page which was never created
  5718. --------V-620043-----------------------------
  5719. INT 62 u - FGDRIVER v1.10 - "FG_FREEPAGE" - FREE VIRTUAL OR LOGICAL VIDEO PAGE
  5720.     AX = 0043h
  5721.     BX = page number (0000h-003Fh)
  5722. Return: AX = status (0000h,0001h,0007h,0009h) (see AX=0042h)
  5723. SeeAlso: AX=0042h,AX=009Dh,AX=009Eh,AX=009Fh
  5724. --------V-620044-----------------------------
  5725. INT 62 u - FGDRIVER v1.10 - "FG_GETADDR" - GET SEGMENT OF ACTIVE VIDEO PAGE
  5726.     AX = 0044h
  5727. Return: AX = segment of active video page
  5728. --------V-620045-----------------------------
  5729. INT 62 u - FGDRIVER v1.10 - "FG_RESIZE" - SET GRAPHICS MODE VIDEO PAGE SIZE
  5730.     AX = 0045h
  5731.     BX = new page width in pixels
  5732.     CX = new page height in pixels
  5733. Notes:    the visible page must be set to 0000h before making this call
  5734.     mouse, joysticks, expanded memory, and extended memory must be
  5735.       reinitialized after this call
  5736. SeeAlso: AX=000Ah,AX=000Bh,AX=0075h,AX=007Ah,AX=00A0h,AX=00A1h
  5737. --------V-620046-----------------------------
  5738. INT 62 u - FGDRIVER v1.10 - "FG_GETMAP" - STORE IMAGE AS MODE-INDEPENDNT BITMAP
  5739.     AX = 0046h
  5740.     ES:BX -> buffer for video mode-independent bitmap
  5741.     CX = width of bitmap in bytes
  5742.     DX = height of bitmap in pixel rows
  5743. Return: each bit in bitmap is set if corresponding pixel is of the current
  5744.       color, cleared otherwise
  5745. Note:    this call is ignored in text modes
  5746. SeeAlso: AX=0047h,AX=0048h
  5747. --------V-620047-----------------------------
  5748. INT 62 u - FGDRIVER v1.10 - "FG_DRAWMAP" - DISPLAY MODE-INDEPENDENT BIT MAP
  5749.     AX = 0047h
  5750.     ES:BX -> bitmap (each set bit is pixel drawn in current color)
  5751.     CX = width of bitmap in bytes
  5752.     DX = height of bitmap in pixel rows
  5753. SeeAlso: AX=0046h,AX=004Ah,AX=004Dh,AX=0052h
  5754. --------V-620048-----------------------------
  5755. INT 62 u - FGDRIVER v1.10 - "FG_GETIMAGE" - STORE IMAGE AS BITMAP
  5756.     AX = 0048h
  5757.     ES:BX -> buffer for video mode-specific bitmap
  5758.     CX = width of bitmap in bytes
  5759.     DX = height of bitmap in pixel rows
  5760. SeeAlso: AX=0046h,AX=0049h,AX=0062h
  5761. --------V-620049-----------------------------
  5762. INT 62 u - FGDRIVER v1.10 - "FG_DRWIMAGE" - DISPLAY BITMAPPED IMAGE
  5763.     AX = 0049h
  5764.     ES:BX -> video mode-specific bitmap
  5765.     CX = width of bitmap in bytes
  5766.     DX = height of bitmap in pixel rows
  5767. Note:    the image will be drawn with its lower left corner at the current
  5768.       cursor position (either text or graphics)
  5769. SeeAlso: AX=0048h,AX=004Ah,AX=0062h
  5770. --------V-62004A-----------------------------
  5771. INT 62 u - FGDRIVER v1.10 - "FG_CLPIMAGE" - DISPLAY CLIPPED IMAGE (BITMAP)
  5772.     AX = 004Ah
  5773.     ES:BX -> mode-specific bitmap
  5774.     CX = width of bit map in bytes
  5775.     DX = height of bit map in pixel rows
  5776. Notes:    this call is ignored in text modes
  5777.     the image is drawn with its lower left corner at the current graphics
  5778.       cursor position
  5779.     the current clipping region is used, extended to a byte boundary
  5780. SeeAlso: AX=0029h,AX=0047h,AX=0049h,AX=004Ch,AX=0052h
  5781. --------V-62004B-----------------------------
  5782. INT 62 u - FGDRIVER v1.10 - "FG_REVIMAGE" - DISPLAY REVERSED IMAGE (BITMAP)
  5783.     AX = 004Bh
  5784.     ES:BX -> mode-specific bitmap
  5785.     CX = width of bitmap in bytes
  5786.     DX = height of bitmap in pixel rows
  5787. Notes:    this call is ignored in text modes
  5788.     the image is drawn with its lower left corner at the current graphics
  5789.       cursor position
  5790. SeeAlso: AX=004Ah,AX=004Ch
  5791. --------V-62004C-----------------------------
  5792. INT 62 u - FGDRIVER v1.10 - "FG_FLPIMAGE" - DISPLAY INV CLIPPED IMAGE (BITMAP)
  5793.     AX = 004Ch
  5794.     ES:BX -> mode-specific bitmap
  5795.     CX = width of bit map in bytes
  5796.     DX = height of bit map in pixel rows
  5797. Notes:    this call is ignored in text modes
  5798.     the image is drawn with its lower left corner at the current graphics
  5799.       cursor position
  5800.     the current clipping region is used, extended to a byte boundary
  5801. SeeAlso: AX=0029h,AX=004Ah
  5802. --------V-62004D-----------------------------
  5803. INT 62 u - FGDRIVER v1.10 - "FG_DISPLAY" - DISPLAY IMAGE (STD PIXEL RUN FORMAT)
  5804.     AX = 004Dh
  5805.     ES:BX -> pixel run map (pairs of bytes: color index, count)
  5806.     CX = number of pixel runs to display
  5807.     DX = width of image in pixels (> 0)
  5808. Notes:    this call is ignored in text modes
  5809.     the image is displayed with its lower left corner at the current
  5810.       graphics cursor position
  5811. SeeAlso: AX=0047h,AX=004Eh,AX=004Fh,AX=0050h,AX=0060h
  5812. --------V-62004E-----------------------------
  5813. INT 62 u - FGDRIVER v1.10 - "FG_DISPLAY" - DISPLAY IMAGE (PACKED PIXEL RUN FMT)
  5814.     AX = 004Eh
  5815.     ES:BX -> pixel run map (trios of bytes: colors, count1, count2; colors
  5816.         contains the color for the first run in its high nybble and the
  5817.         color for the second run in its low nybble)
  5818.     CX = number of pixel runs to display
  5819.     DX = width of image in pixels (> 0)
  5820. Notes:    this call is ignored in text modes
  5821.     the image is displayed with its lower left corner at the current
  5822.       graphics cursor position
  5823. SeeAlso: AX=004Dh,AX=004Fh,AX=0050h,AX=0060h
  5824. --------V-62004F-----------------------------
  5825. INT 62 u - FGDRIVER v1.10 - "FG_DISPFILE" - DISPLAY STORED IMAGE
  5826.     AX = 004Fh
  5827.     ES:BX -> ASCIZ filename
  5828.     CX = image width in pixels (> 0)
  5829.     DX = image format
  5830.         0000h Fastgraph standard pixel run format
  5831.         0001h packed pixel run format
  5832. Notes:    this call is ignored in text modes
  5833.     the image is displayed with its lower left corner at the current
  5834.       graphics cursor position
  5835. SeeAlso: AX=004Dh,AX=004Eh,AX=0050h,AX=0060h
  5836. --------V-620050-----------------------------
  5837. INT 62 u - FGDRIVER v1.10 - "FG_PATTERN" - SPECIFY DISPLAY PATTERN FOR COLOR
  5838.     AX = 0050h
  5839.     BX = index of pattern to define
  5840.     CX = number of predefined display pattern
  5841. Notes:    when displaying a pixel run map, Fastgraph uses the pattern associated
  5842.       with each color index rather than displaying the actual color
  5843.     this call has no effect in text and 256-color graphics modes
  5844. SeeAlso: AX=004Dh,AX=004Eh,AX=004Fh
  5845. --------V-620051-----------------------------
  5846. INT 62 u - FGDRIVER v1.10 - "FG_DRAWMASK" - DISPLAY IMAGE (MASKING MAP)
  5847.     AX = 0051h
  5848.     ES:BX -> array containing image stores as a masking map (see below)
  5849.     CX = number of pixel runs in masking map
  5850.     DX = width of masking map in pixels
  5851. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  5852.       modes
  5853.     the image is drawn with its lower left corner at the current graphics
  5854.       cursor position
  5855. SeeAlso: AX=0052h
  5856.  
  5857. Format of masking map:
  5858. Offset    Size    Description
  5859.  00h    BYTE    length of first "protect" run (pixels remain unchanged)
  5860.  01h    BYTE    length of first "zero" run (pixels set to background color)
  5861.  02h    BYTE    length of second "protect" run
  5862.  03h    BYTE    length of second "zero" run
  5863.     ...
  5864. --------V-620052-----------------------------
  5865. INT 62 u - FGDRIVER v1.10 - "FG_CLIPMASK" - DISPLAY CLIPPED IMAGE (MASKING MAP)
  5866.     AX = 0052h
  5867.     ES:BX -> array containing image stored as a masking map (see AX=0051h)
  5868.     CX = number of pixel runs in masking map
  5869.     DX = width of masking map in pixels
  5870. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  5871.       modes
  5872.     the image is drawn with its lower left corner at the current graphics
  5873.       cursor position
  5874. SeeAlso: AX=0029h,AX=004Ah,AX=0051h,AX=0053h,AX=0054h
  5875. --------V-620053-----------------------------
  5876. INT 62 u - FGDRIVER v1.10 - "FG_REVMASK" - DISPLAY REVERSED IMAGE (MASKING MAP)
  5877.     AX = 0053h
  5878.     ES:BX -> array containing image stored as a masking map (see AX=0051h)
  5879.     CX = number of pixel runs in masking map
  5880.     DX = width of masking map in pixels
  5881. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  5882.       modes
  5883.     the image is drawn with its lower left corner at the current graphics
  5884.       cursor position
  5885. SeeAlso: AX=0052h,AX=0054h
  5886. --------V-620054-----------------------------
  5887. INT 62 u - FGDRIVER v1.10 - "FG_FLIPMASK" - DISPLAY INV CLIPPED IMAGE (MASKMAP)
  5888.     AX = 0054h
  5889.     ES:BX -> array containing image stored as a masking map (see AX=0051h)
  5890.     CX = number of pixel runs in masking map
  5891.     DX = width of masking map in pixels
  5892. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  5893.       modes
  5894.     the image is drawn with its lower left corner at the current graphics
  5895.       cursor position
  5896. SeeAlso: AX=0029h,AX=0052h,AX=0053h
  5897. --------V-620055-----------------------------
  5898. INT 62 - FGDRIVER v1.10 - UNUSED
  5899.     AX = 0055h to 0059h
  5900. Return: AX = 0000h
  5901. --------V-62005A-----------------------------
  5902. INT 62 u - FGDRIVER v1.10 - "FG_SAVE" - COPY REGION FROM VISIBLE TO HIDDEN PAGE
  5903.     AX = 005Ah
  5904.     BX = left edge column
  5905.     CX = right edge column
  5906.     DX = top edge row
  5907.     SI = bottom edge row
  5908. Note:    left and right edges are adjusted to byte boundaries if necessary
  5909. SeeAlso: AX=005Bh
  5910. --------V-62005B-----------------------------
  5911. INT 62 u - FGDRIVER v1.10 - "FG_RESTORE" - COPY REGION FROM HIDDEN TO VIS PAGE
  5912.     AX = 005Bh
  5913.     BX = left edge column
  5914.     CX = right edge column
  5915.     DX = top edge row
  5916.     SI = bottom edge row
  5917. Note:    left and right edges are adjusted to byte boundaries if necessary
  5918. SeeAlso: AX=005Ah,AX=0064h
  5919. --------V-62005C-----------------------------
  5920. INT 62 u - FGDRIVER v1.10 - "FG_TRANSFER" - COPY REGION
  5921.     AX = 005Ch
  5922.     CX = source video page
  5923.     DX = destination video page
  5924.     ES:BX -> copy record (see below)
  5925. Note:    source and destination regions must not overlap if on the same page
  5926. SeeAlso: AX=005Dh,AX=005Fh
  5927.  
  5928. Format of copy record:
  5929. Offset    Size    Description
  5930.  00h    WORD    left edge column of source region
  5931.  02h    WORD    right edge column of source region
  5932.  04h    WORD    top edge row of source region
  5933.  06h    WORD    bottom edge row of source region
  5934.  08h    WORD    left edge of destination
  5935.  0Ah    WORD    bottom edge of destination
  5936. --------V-62005D-----------------------------
  5937. INT 62 u - FGDRIVER v1.10 - "FG_TCXFER" - COPY REGION EXCLUDING TRANSPARENT
  5938.     AX = 005Dh
  5939.     CX = source video page
  5940.     DX = destination video page
  5941.     ES:BX -> copy record (see AX=005Ch)
  5942. Notes:    pixels which are in any of the colors defined as transparent with
  5943.       AX=005Eh are left unchanged in the destination region
  5944.     source and destination regions must not overlap if on the same page
  5945.     this call is ignored in text modes
  5946. SeeAlso: AX=005Ch,AX=005Eh
  5947. --------V-62005E-----------------------------
  5948. INT 62 u - FGDRIVER v1.10 - "FG_TCMASK" - SET TRANSPARENT COLORS
  5949.     AX = 005Eh
  5950.     BX = colors to consider transparent (bit 0 = color 0, etc)
  5951. Notes:    this call is ignored in text modes
  5952.     the specified colors are considered transparent by AX=005Dh
  5953. SeeAlso: AX=005Dh
  5954. --------V-62005F-----------------------------
  5955. INT 62 u - FGDRIVER v1.10 - "FG_COPYPAGE" - TRANSFER VIDEO PAGE CONTENTS
  5956.     AX = 005Fh
  5957.     BX = source page number (0000h-003Fh)
  5958.     CX = destination page number (0000h-003Fh)
  5959. Note:    if both source and destination pages are logical pages, they must both
  5960.       be located in the same type (conventional, EMS, XMS) of memory
  5961. SeeAlso: AX=005Ch,AX=009Dh,AX=009Eh,AX=009Fh
  5962. --------V-620060-----------------------------
  5963. INT 62 u - FGDRIVER v1.10 - "FG_DISPPCX" - DISPLAY PCX FILE
  5964.     AX = 0060h
  5965.     ES:BX -> ASCIZ filename
  5966.     CX = flags
  5967.         bit 0: use current palette rather than PCX file's palette
  5968.         bits 1-15 reserved (0)
  5969. Return: AX = status
  5970.         0000h success
  5971.         0001h file not found
  5972.         0002h file is not a valid PCX file
  5973. Notes:    this call is ignored in text modes and Hercules low-resolution graphics
  5974.     the image is displayed with its upper left corner at the current
  5975.       graphics cursor position
  5976. SeeAlso: AX=004Dh,AX=004Eh,AX=004Fh,AX=0061h
  5977. --------V-620061-----------------------------
  5978. INT 62 u - FGDRIVER v1.10 - "FG_MAKEPCX" - CREATE PCX FILE FROM SCREEN WINDOW
  5979.     AX = 0061h
  5980.     BX = left edge in screen space units
  5981.     CX = right edge in screen space units
  5982.     DX = top edge in screen space units
  5983.     SI = bottom edge in screen space units
  5984.     ES:DI -> ASCIZ filename of PCX file to create
  5985. Return: AX = status
  5986.         0000h successful
  5987.         0001h file not created
  5988. Notes:    the PCX file is created from the specified region of the active video
  5989.       page; the left and right edges are adjusted to a byte boundary if
  5990.       necessary
  5991.     if the specified file already exists, it is overwritten
  5992.     this call is ignored in text and Hercules low-resolution graphics modes
  5993. SeeAlso: AX=0060h
  5994. --------V-620062-----------------------------
  5995. INT 62 u - FGDRIVER v1.10 - "FG_IMAGESIZ" - DETERMINE IMAGE STORAGE REQUIREMENT
  5996.     AX = 0062h
  5997.     BX = image width in pixels
  5998.     CX = image height in pixels
  5999. Return: DX:AX = size in bytes of mode-specific bitmap for current video mode
  6000. SeeAlso: AX=0048h
  6001. --------V-620063-----------------------------
  6002. INT 62 - FGDRIVER v1.10 - UNUSED
  6003.     AX = 0063h
  6004. Return: AX = 0000h
  6005. --------V-620064-----------------------------
  6006. INT 62 u - FGDRIVER v1.10 - "FG_FADEIN" - FADE IN HIDDEN PAGE
  6007.     AX = 0064h
  6008.     BX = delay (0000h = fastest possible fade-in)
  6009. Notes:    the current hidden page is copied to the current visible page in small
  6010.       random sections to produce a fade-in effect
  6011.     this call is ignored in text modes
  6012. SeeAlso: AX=005Bh,AX=0065h
  6013. --------V-620065-----------------------------
  6014. INT 62 u - FGDRIVER v1.10 - "FG_FADEOUT" - FADE OUT TO CURRENT COLOR
  6015.     AX = 0065h
  6016.     BX = delay (0000h = fastest possible fade-out)
  6017. Notes:    this call is ignored in text modes
  6018.     the current visible page is filled with pixels of the current color in
  6019.       small random sections to give a fade-out effect
  6020. SeeAlso: AX=0064h
  6021. --------V-620066-----------------------------
  6022. INT 62 u - FGDRIVER v1.10 - "FG_PAN" - SET SCREEN ORIGIN
  6023.     AX = 0066h
  6024.     BX = new column for screen origin
  6025.     CX = new row for screen origin
  6026. SeeAlso: AX=0067h
  6027. --------V-620067-----------------------------
  6028. INT 62 u - FGDRIVER v1.10 - "FG_SCROLL" - VERTICALLY SCROLL SCREEN REGION
  6029.     AX = 0067h
  6030.     BX = left edge column
  6031.     CX = right edge column
  6032.     DX = top edge row
  6033.     SI = bottom edge row
  6034.     DI = number of pixels by which to scroll (positive scrolls up,
  6035.         negative scrolls down)
  6036.     ES = type of scroll
  6037.         0000h circular (rows scrolled off are copied to vacated rows)
  6038.         else vacated rows are filled with the current color
  6039. Notes:    in graphics modes, the left and right edges are adjusted to byte
  6040.       boundaries if necessary
  6041.     circular scrolling uses part of the hidden page as a workspace
  6042. SeeAlso: AX=0066h
  6043. --------V-620068-----------------------------
  6044. INT 62 - FGDRIVER v1.10 - UNUSED
  6045.     AX = 0068h to 006Ch
  6046. Return: AX = 0000h
  6047. --------V-62006D-----------------------------
  6048. INT 62 u - FGDRIVER v1.10 - "FG_WAITKEY" - FLUSH KEYBOARD BUFFER AND AWAIT KEY
  6049.     AX = 006Dh
  6050. Return: after next key pressed
  6051. SeeAlso: AX=006Eh,AX=006Fh,AX=0096h
  6052. --------V-62006E-----------------------------
  6053. INT 62 u - FGDRIVER v1.10 - "FG_GETKEY" - GET NEXT KEYSTROKE
  6054.     AX = 006Eh
  6055.     ES:BX -> variable pointer record (see below)
  6056. Return: (after next keystroke if no typeahead) variables updated
  6057. SeeAlso: AX=006Dh,AX=006Fh,AX=0070h
  6058.  
  6059. Format of variable pointer record:
  6060. Offset    Size    Description
  6061.  00h    WORD    segment of BYTE buffer for ASCII keycode
  6062.  02h    WORD    offset of BYTE buffer for ASCII keycode
  6063.  04h    WORD    segment of BYTE buffer for extended keycode
  6064.  06h    WORD    offset of BYTE buffer for extended keycode
  6065. --------V-62006F-----------------------------
  6066. INT 62 u - FGDRIVER v1.10 - "FG_INTKEY" - GET KEYSTROKE, NO WAIT
  6067.     AX = 006Fh
  6068.     ES:BX -> variable pointer record (see below)
  6069. Return: variables updated
  6070. Note:    if the keyboard buffer is empty, both the ASCII and extended keycodes
  6071.       are set to 00h
  6072. SeeAlso: AX=006Dh,AX=006Eh,AX=0070h,AX=0079h
  6073.  
  6074. Format of variable pointer record:
  6075. Offset    Size    Description
  6076.  00h    WORD    segment of BYTE buffer for ASCII keycode
  6077.  02h    WORD    offset of BYTE buffer for ASCII keycode
  6078.  04h    WORD    segment of BYTE buffer for extended keycode
  6079.  06h    WORD    offset of BYTE buffer for extended keycode
  6080. --------V-620070-----------------------------
  6081. INT 62 u - FGDRIVER v1.10 - "FG_CAPSLOCK" - GET STATE OF CAPSLOCK KEY
  6082.     AX = 0070h
  6083. Return: AX = CapsLock state (0000h off, 0001h on)
  6084. SeeAlso: AX=006Eh,AX=006Fh,AX=0071h,AX=0072h,AX=0074h
  6085. --------V-620071-----------------------------
  6086. INT 62 u - FGDRIVER v1.10 - "FG_SETCAPS" - SET STATE OF CAPSLOCK KEY
  6087.     AX = 0071h
  6088.     BX = new state (0000h off, 0001h on)
  6089. SeeAlso: AX=0070h,AX=0073h
  6090. --------V-620072-----------------------------
  6091. INT 62 u - FGDRIVER v1.10 - "FG_NUMLOCK" - GET STATE OF NUMLOCK KEY
  6092.     AX = 0072h
  6093. Return: AX = NumLock state (0000h off, 0001h on)
  6094. SeeAlso: AX=0070h,AX=0074h
  6095. --------V-620073-----------------------------
  6096. INT 62 u - FGDRIVER v1.10 - "FG_SETNUM" - SET STATE OF NUMLOCK KEY
  6097.     AX = 0073h
  6098.     BX = new state (0000h off, 0001h on)
  6099. SeeAlso: AX=0071h,AX=0072h
  6100. --------V-620074-----------------------------
  6101. INT 62 u - FGDRIVER v1.10 - "FG_SCRLOCK" - GET STATE OF SCROLL LOCK KEY
  6102.     AX = 0074h
  6103. Return: AX = ScrollLock state (0000h off, 0001h on)
  6104. SeeAlso: AX=0070h,AX=0072h
  6105. --------V-620075-----------------------------
  6106. INT 62 u - FGDRIVER v1.10 - "FG_INITJOY" - INITIALIZE JOYSTICK USE
  6107.     AX = 0075h
  6108.     BX = joystick number (0001h or 0002h)
  6109. Return: AX = status
  6110.         0000h successful
  6111.         FFFFh joystick not connected or no game port
  6112. Note:    Fastgraph assumes that the requested joystick is centered at the time
  6113.       this function is called
  6114. SeeAlso: AX=0076h,AX=0077h,AX=0078h,AX=0079h
  6115. --------V-620076-----------------------------
  6116. INT 62 u - FGDRIVER v1.10 - "FG_GETXJOY" - GET HORIZONTAL POSITION OF JOYSTICK
  6117.     AX = 0076h
  6118.     BX = joystick number (0001h or 0002h)
  6119. Return: AX = horizontal position of joystick
  6120.         FFFFh if joystick uninitialized or not present
  6121. Notes:    the actual coordinates are processor- and joystick-dependent
  6122.     you must call AX=0075h before this function
  6123. SeeAlso: AX=0075h,AX=0077h,AX=0078h
  6124. --------V-620077-----------------------------
  6125. INT 62 u - FGDRIVER v1.10 - "FG_GETYJOY" - GET VERTICAL POSITION OF JOYSTICK
  6126.     AX = 0077h
  6127.     BX = joystick number (0001h or 0002h)
  6128. Return: AX = vertical position of joystick
  6129.         FFFFh if joystick uninitialized or not present
  6130. Notes:    the actual coordinates are processor- and joystick-dependent
  6131.     you must call AX=0075h before this function
  6132. SeeAlso: AX=0075h,AX=0076h,AX=0078h
  6133. --------V-620078-----------------------------
  6134. INT 62 u - FGDRIVER v1.10 - "FG_BUTTON" - GET JOYSTICK BUTTON STATE
  6135.     AX = 0078h
  6136.     BX = joystick number (0001h or 0002h)
  6137. Return: AX = button states
  6138.         bit 0: top button pressed
  6139.         bit 1: bottom button pressed
  6140. SeeAlso: AX=0075h,AX=0076h,AX=0077h,AX=0079h
  6141. --------V-620079-----------------------------
  6142. INT 62 u - FGDRIVER v1.10 - "FG_INTJOY" - GET KEYCODES CORRESP TO JOYSTICK POS
  6143.     AX = 0079h
  6144.     CX = joystick number (0001h or 0002h)
  6145.     ES:BX -> variable pointer record (see below)
  6146. Notes:    if the indicated joystick has not been initialized with AX=0075h, both
  6147.       the button code and joystick position will be set to 00h
  6148.     if either button is pressed, a button code of 0Dh is returned;
  6149.       otherwise, a button code of 00h is returned
  6150. SeeAlso: AX=006Fh,AX=0075h,AX=0078h
  6151.  
  6152. Format of variable pointer record:
  6153. Offset    Size    Description
  6154.  00h    WORD    segment of BYTE buffer for button code
  6155.  02h    WORD    offset of BYTE buffer for button code
  6156.  04h    WORD    segment of BYTE buffer for joystick position
  6157.  06h    WORD    offset of BYTE buffer for joystick position
  6158. --------V-62007A-----------------------------
  6159. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEINI" - INITIALIZE MOUSE SUPPORT
  6160.     AX = 007Ah
  6161. Return: AX = status
  6162.         0002h two-button mouse
  6163.         0003h three-button mouse
  6164.         FFFFh initialization failed
  6165. Note:    after this call, the mouse cursor is invisible
  6166. SeeAlso: AX=007Bh,AX=007Ch,AX=007Eh,AX=0080h,INT 33/AX=0000h
  6167. --------V-62007B-----------------------------
  6168. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEVIS" - SET MOUSE CURSOR VISIBILITY
  6169.     AX = 007Bh
  6170.     BX = new state (0000h invisible, 0001h visible)
  6171. SeeAlso: AX=007Ah,AX=007Eh,INT 33/AX=0001h,INT 33/AX=0002h
  6172. --------V-62007C-----------------------------
  6173. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEBUT" - GET MOUSE BUTTON PRESS/RELEASE CNTS
  6174.     AX = 007Ch
  6175.     CX = mouse button (1 = left press, 2 = right press, 3 = middle press,
  6176.               -1=left release, -2=right release, -3=middle release)
  6177.     ES:BX -> variable pointer record (see below)
  6178. Return: variables updated
  6179. Note:    returns the count of presses or releases since the last call to this
  6180.       function; if the count is zero, row and col will also be zero
  6181. SeeAlso: AX=007Ah,INT 33/AX=0005h,INT 33/AX=0006h
  6182.  
  6183. Format of variable pointer record:
  6184. Offset    Size    Description
  6185.  00h    WORD    segment of WORD buffer for press/release count
  6186.  02h    WORD    offset of WORD buffer for press/release count
  6187.  04h    WORD    segment of WORD buffer for screen space col of last press/rls
  6188.  06h    WORD    offset of WORD buffer for screen space col of last press/rels
  6189.  08h    WORD    segment of WORD buffer for screen space row of last press/rls
  6190.  0Ah    WORD    offset of WORD buffer for screen space row of last press/rls
  6191. --------V-62007D-----------------------------
  6192. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEPOS" - GET CURRENT MOUSE POSITION
  6193.     AX = 007Dh
  6194.     ES:BX -> variable pointer record (see below)
  6195. SeeAlso: AX=007Ah,AX=0081h
  6196.  
  6197. Format of variable pointer record:
  6198. Offset    Size    Description
  6199.  00h    WORD    segment of WORD buffer for mouse column
  6200.  02h    WORD    offset of WORD buffer for mouse column
  6201.  04h    WORD    segment of WORD buffer for mouse row
  6202.  06h    WORD    offset of WORD buffer for mouse row
  6203.  08h    WORD    segment of WORD buffer for button status
  6204.  0Ah    WORD    offset of WORD buffer for button status
  6205. Note:    button status: bit 0 = left button, bit 1 = right, bit 2 = middle
  6206. --------V-62007E-----------------------------
  6207. INT 62 u - FGDRIVER v1.10 - "FG_MOUSECUR" - SPECIFY TEXT-MODE MOUSE CURSOR
  6208.     AX = 007Eh
  6209.     BX = screen mask
  6210.     CX = cursor mask
  6211. Note:    this call is ignored in graphics modes
  6212. SeeAlso: AX=007Ah,AX=007Fh,INT 33/AX=000Ah
  6213. --------V-62007F-----------------------------
  6214. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEPTR" - SPECIFY GRAPH-MODE MOUSE CURSOR
  6215.     AX = 007Fh
  6216.     ES:BX -> masks (16-byte screen mask followed by 16-byte cursor mask)
  6217.     CX = X offset of hot spot from upper left corner
  6218.     DX = Y offset of hot spot from upper left corner
  6219. Note:    this call is ignored in text modes
  6220. SeeAlso: AX=007Ah,AX=007Eh,INT 33/AX=0009h
  6221. --------V-620080-----------------------------
  6222. INT 62 u - FGDRIVER v1.10 - "FG_MOUSELIM" - SPECIFY MOUSE CURSOR LIMITS
  6223.     AX = 0080h
  6224.     BX = left-most position allowed for mouse cursor
  6225.     CX = right-most position allowed
  6226.     DX = top-most position allowed
  6227.     SI = bottom-most position allowed
  6228. SeeAlso: AX=007Ah,AX=0081h,INT 33/AX=0007h,INT 33/AX=0008h
  6229. --------V-620081-----------------------------
  6230. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEMOV" - SET MOUSE CURSOR POSITION
  6231.     AX = 0081h
  6232.     BX = new column
  6233.     CX = new row
  6234. Note:    will not move the mouse cursor outside the bounding box specified with
  6235.       AX=0080h
  6236. SeeAlso: AX=007Ah,AX=007Dh,AX=0080h,INT 33/AX=0004h
  6237. --------V-620082-----------------------------
  6238. INT 62 u - FGDRIVER v1.10 - "FG_MOUSESPD" - SET MOUSE CURSOR SPEED
  6239.     AX = 0082h
  6240.     BX = horizontal mickeys per eight pixels of movement (default 16)
  6241.     CX = vertical mickeys per eight pixels of movement (default 16)
  6242. SeeAlso: INT 33/AX=000Fh,INT 33/AX=001Ah
  6243. --------V-620083-----------------------------
  6244. INT 62 - FGDRIVER v1.10 - UNUSED
  6245.     AX = 0083h to 0087h
  6246. Return: AX = 0000h
  6247. --------V-620088-----------------------------
  6248. INT 62 u - FGDRIVER v1.10 - "FG_SOUND" - MAKE SOUND FOR SPECIFIED DURATION
  6249.     AX = 0088h
  6250.     BX = frequency in Hertz (18-32767)
  6251.     CX = duration in clock ticks (0000h or negative for continuous sound)
  6252. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  6253.       progress
  6254. SeeAlso: AX=0089h,AX=008Ah,AX=008Eh,AX=0090h
  6255. --------V-620089-----------------------------
  6256. INT 62 u - FGDRIVER v1.10 - "FG_SOUNDS" - PLAY SOUNDS IN BACKGROUND
  6257.     AX = 0089h
  6258.     CX = number of times to cycle through sound list
  6259.     ES:BX -> sounds array (see below)
  6260. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  6261.       progress
  6262. SeeAlso: AX=0088h,AX=008Eh,AX=008Fh
  6263.  
  6264. Format of sounds array element:
  6265. Offset    Size    Description
  6266.  00h    WORD    frequency of sound in Hertz (0000h ends array)
  6267.  02h    WORD    duration of sound in clock ticks
  6268. --------V-62008A-----------------------------
  6269. INT 62 u - FGDRIVER v1.10 - "FG_VOICE" - START SOUND
  6270.     AX = 008Ah
  6271.     BX = channel on TI sound chip
  6272.         1-3 = channels 1-3, 4 = channel 4 with periodic noise,
  6273.         5 = channel 4 with white noise
  6274.     CX = frequency in Hz (18-32767 for channels 1-3; 0=512 Hz, 1=1024 Hz,
  6275.         2=2048 Hz for channels 4 and 5)
  6276.     DX = volume
  6277.     SI = duration in clock ticks (continuous if <= 0)
  6278. Notes:    FGDRIVER is the external video driver for the shareware
  6279.       Fastgraph/Light by Ted Gruber Software
  6280.     only available on PCjr and Tandy 1000
  6281. SeeAlso: AX=0088h,AX=008Bh,AX=008Ch
  6282. --------V-62008B-----------------------------
  6283. INT 62 u - FGDRIVER v1.10 - "FG_VOICES" - PLAY SOUNDS IN BACKGROUND
  6284.     AX = 008Bh
  6285.     ES:BX -> tone array (see below)
  6286.     CX = number of times to repeat tone array
  6287. Notes:    FGDRIVER is the external video driver for the shareware
  6288.       Fastgraph/Light by Ted Gruber Software
  6289.     only available on PCjr and Tandy 1000
  6290. SeeAlso: AX=008Ah,AX=008Dh,AX=008Eh,AX=008Fh,AX=0091h
  6291.  
  6292. Format of tone array element:
  6293. Offset    Size    Description
  6294.  00h    WORD    channel number (0000h terminates array)
  6295.  02h    WORD    frequency
  6296.  04h    WORD    volume
  6297.  06h    WORD    duration in 1/72.8 seconds
  6298. --------V-62008C-----------------------------
  6299. INT 62 u - FGDRIVER v1.10 - "FG_MUSIC" - PLAY SERIES OF NOTES
  6300.     AX = 008Ch
  6301.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  6302. Return: after music completed
  6303. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  6304.       progress
  6305. SeeAlso: AX=008Ah,AX=008Dh
  6306. --------V-62008D-----------------------------
  6307. INT 62 u - FGDRIVER v1.10 - "FG_MUSICB" - PLAY SERIES OF NOTES IN BACKGROUND
  6308.     AX = 008Dh
  6309.     CX = number of repetitions (negative = continuous play)
  6310.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  6311. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  6312.       progress
  6313. SeeAlso: AX=008Bh,AX=008Ch,AX=008Eh,AX=008Fh,AX=0091h
  6314. --------V-62008E-----------------------------
  6315. INT 62 u - FGDRIVER v1.10 - "FG_HUSH" - STOP ASYNCHRONOUS SOUND IMMEDIATELY
  6316.     AX = 008Eh
  6317. Note:    immediately stops any sounds started with "FG_MUSICB", "FG_SOUNDS",
  6318.       or AX=008Bh; ignored if no asynchronous sound is playing
  6319. SeeAlso: AX=0088h,AX=008Bh,AX=008Fh,AX=0090h,AX=0091h
  6320. --------V-62008F-----------------------------
  6321. INT 62 u - FGDRIVER v1.10 - "FG_HUSHNEXT" - STOP ASYNCHRONOUS SOUND
  6322.     AX = 008Fh
  6323. Note:    stops any sounds started with "FG_MUSICB", "FG_SOUNDS", or AX=008Bh
  6324.       after the current repetition completes; ignored unless asynchronous
  6325.       sound is continuous
  6326. SeeAlso: AX=008Bh,AX=008Eh,AX=0090h
  6327. --------V-620090-----------------------------
  6328. INT 62 u - FGDRIVER v1.10 - "FG_QUIET" - STOP CONTINUOUS SYNCHRONOUS SOUND
  6329.     AX = 0090h
  6330. Note:    this call has no effect if there is no continuous sound playing
  6331. SeeAlso: AX=008Eh,AX=008Fh,AX=0091h
  6332. --------V-620091-----------------------------
  6333. INT 62 u - FGDRIVER v1.10 - "FG_PLAYING" - DETERMINE WHETHER ASYNC SOUND ACTIVE
  6334.     AX = 0091h
  6335. Return: AX = sound state (0 = no asynchronous sound, 1 = async sound playing)
  6336. SeeAlso: AX=008Bh,AX=008Dh,AX=0090h
  6337. --------V-620092-----------------------------
  6338. INT 62 u - FGDRIVER v1.10 - "FG_RESUME" - RESTART ASYNCHRONOUS SOUND
  6339.     AX = 0092h
  6340. SeeAlso: AX=008Eh,AX=008Fh,AX=0090h
  6341. --------V-620093-----------------------------
  6342. INT 62 u - FGDRIVER v1.10 - "FG_SUSPEND" - TEMPORARILY STOP ASYNCHRONOUS SOUND
  6343.     AX = 0093h
  6344. Notes:    this call has no effect if there is no asynchronous sound in progress
  6345.     the program must not exit while sound is suspended
  6346. SeeAlso: AX=0092h
  6347. --------V-620094-----------------------------
  6348. INT 62 - FGDRIVER v1.10 - UNUSED
  6349.     AX = 0094h to 0095h
  6350. Return: AX = 0000h
  6351. --------V-620096-----------------------------
  6352. INT 62 u - FGDRIVER v1.10 - "FG_WAITFOR" - DELAY FOR SPECIFIED DURATION
  6353.     AX = 0096h
  6354.     BX = duration in clock ticks
  6355. Return: after delay elapses
  6356. SeeAlso: AX=006Dh,AX=0097h,INT 1A/AX=FF01h
  6357. --------V-620097-----------------------------
  6358. INT 62 u - FGDRIVER v1.10 - "FG_STALL" - PAUSE FOR SPECIFIED DURATION
  6359.     AX = 0097h
  6360.     BX = duration in processor-dependent delay units (see AX=0098h)
  6361. Return: after delay elapses
  6362. SeeAlso: AX=0096h,AX=0098h,INT 2F/AX=1224h
  6363. --------V-620098-----------------------------
  6364. INT 62 u - FGDRIVER v1.10 - "FG_MEASURE" - GET DELAY UNITS PER CLOCK TICK
  6365.     AX = 0098h
  6366. Return: AX = delay units per clock tick (processor-dependent)
  6367. Note:    delay units are used by "FG_STALL" (AX=0097h)
  6368. SeeAlso: AX=0097h
  6369. --------V-620099-----------------------------
  6370. INT 62 u - FGDRIVER v1.10 - "FG_GETCLOCK" - GET CLOCK TICKS SINCE MIDNIGHT
  6371.     AX = 0099h
  6372. Return: DX:AX = number of clock ticks since midnight
  6373. Note:    FGDRIVER is the external video driver for the shareware
  6374.       Fastgraph/Light by Ted Gruber Software
  6375. SeeAlso: INT 1A/AH=00h
  6376. --------V-62009A-----------------------------
  6377. INT 62 - FGDRIVER v1.10 - UNUSED
  6378.     AX = 009Ah
  6379. Return: AX = 0000h
  6380. --------V-62009B-----------------------------
  6381. INT 62 u - FGDRIVER v1.10 - "FG_MEMAVAIL" - QUERY AMOUNT OF FREE MEMORY
  6382.     AX = 009Bh
  6383. Return: DX:AX = number of bytes of conventional memory available
  6384. SeeAlso: AX=009Dh
  6385. --------V-62009C-----------------------------
  6386. INT 62 u - FGDRIVER v1.10 - "FG_SETFUNC" - SET LOGICAL OPERATION FOR VIDEO OPS
  6387.     AX = 009Ch
  6388.     BX = operation
  6389.         0000h replacement
  6390.         0001h AND
  6391.         0002h OR
  6392.         0003h XOR
  6393. Note:    only available in native EGA/VGA graphics mode (0Dh to 12h)
  6394. --------V-62009D-----------------------------
  6395. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCCMS" - CREATE LOGICAL VIDEO PAGE (CONVMEM)
  6396.     AX = 009Dh
  6397.     BX = page number (0001h-003Fh)
  6398. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see below)
  6399. Note:    the only operation which is allowed on logical pages is AX=005Fh
  6400. SeeAlso: AX=0043h,AX=005Fh,AX=009Bh,AX=009Eh,AX=009Fh
  6401.  
  6402. Values for status:
  6403.  0000h    successful
  6404.  FFFCh    insufficient memory
  6405.  FFFDh    page already created, or exists as physical or virtual page
  6406.  FFFEh    invalid page number
  6407.  FFFFh    memory manager not initialized
  6408. --------V-62009E-----------------------------
  6409. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCEMS" - CREATE LOGICAL VIDEO PAGE (EMS)
  6410.     AX = 009Eh
  6411.     BX = page number (0001h-003Fh)
  6412. Return: AX = status (see AX=009Dh)
  6413. Notes:    must first call AX=00A0h
  6414.     the only operation which is allowed on logical pages is AX=005Fh
  6415. SeeAlso: AX=0043h,AX=005Fh,AX=009Dh,AX=009Fh,AX=00A0h
  6416. --------V-62009F-----------------------------
  6417. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCXMS" - CREATE LOGICAL VIDEO PAGE (XMS)
  6418.     AX = 009Fh
  6419.     BX = page number (0001h-003Fh)
  6420. Return: AX = status (see AX=009Dh)
  6421. Notes:    must first call AX=00A1h
  6422.     the only operation which is allowed on logical pages is AX=005Fh
  6423. SeeAlso: AX=0043h,AX=005Fh,AX=009Dh,AX=009Eh,AX=00A1h
  6424. --------V-6200A0-----------------------------
  6425. INT 62 u - FGDRIVER v1.10 - "FG_INITEMS" - INITIALIZE EXPANDED MEMORY USE
  6426.     AX = 00A0h
  6427. Return: AX = status
  6428.         0000h successful
  6429.         FFFFh expanded memory manager inaccessible or not installed
  6430. SeeAlso: AX=009Eh,AX=00A1h
  6431. --------V-6200A1-----------------------------
  6432. INT 62 u - FGDRIVER v1.10 - "FG_INITXMS" - INITIALIZE EXTENDED MEMORY USE
  6433.     AX = 00A1h
  6434. Return: AX = status
  6435.         0000h successful
  6436.         FFFFh extended memory manager inaccessible or not installed
  6437. SeeAlso: AX=009Fh,AX=00A0h
  6438. --------V-6200A2-----------------------------
  6439. INT 62 u - FGDRIVER v1.10 - "FG_BOX" - DRAW UNFILLED RECTANGLE
  6440.     AX = 00A2h
  6441.     BX = left column
  6442.     CX = right column
  6443.     DX = top row
  6444.     SI = bottom row
  6445. Notes:    FGDRIVER is the external video driver for the shareware
  6446.       Fastgraph/Light by Ted Gruber Software
  6447.     the rectangle is drawn in screen space, respecting the clipping region,
  6448.       width edges of the width specified with AX=00A3h (default = 1 is set
  6449.       by "FG_SETMODE")
  6450.     this function has no effect in text modes
  6451. SeeAlso: AX=002Bh,AX=002Ch,AX=002Eh,AX=0030h,AX=00A3h
  6452. --------V-6200A3-----------------------------
  6453. INT 62 u - FGDRIVER v1.10 - "FG_BOXDEPTH" - SET RECTANGLE BORDER WIDTH
  6454.     AX = 00A3h
  6455.     BX = width of left and right edges in pixels (> 0)
  6456.     CX = width of top and bottom edges in pixels (> 0)
  6457. SeeAlso: AX=00A2h
  6458. --------V-6200A4-----------------------------
  6459. INT 62 u - FGDRIVER v1.10 - "FG_GETDACS" - GET VIDEO DAC CONTENTS
  6460.     AX = 00A4h
  6461.     CX = number of DAC registers to return (0001h to 0100h)
  6462.     DX = starting DAC register number (0000h to 00FFh)
  6463.     ES:BX -> buffer for DAC red/green/blue triples
  6464. Note:    the register number wraps back to zero after FFh
  6465. SeeAlso: AX=001Ch,AX=00A5h,INT 10/AX=1017h
  6466. --------V-6200A5-----------------------------
  6467. INT 62 u - FGDRIVER v1.10 - "FG_SETDACS" - SET VIDEO DAC CONTENTS
  6468.     AX = 00A5h
  6469.     CX = number of DAC registers to set (0001h to 0100h)
  6470.     DX = starting DAC register number (0000h to 00FFh)
  6471.     ES:BX -> buffer containing DAC red/green/blue triples
  6472. Notes:    the register number wraps back to zero after FFh
  6473.     this call has no effect in text modes or graphics modes below 11h
  6474. SeeAlso: AX=001Bh,AX=00A4h,INT 10/AX=1012h
  6475. --------T-6201-------------------------------
  6476. INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
  6477.     AH = 01h
  6478. Program: Cswitch is a set of multitasking functions by Herb Rose
  6479. SeeAlso: AH=05h,AH=06h,INT 15/AX=1000h,INT 2F/AX=1680h
  6480. --------T-6202-------------------------------
  6481. INT 62 - Cswitch - WAIT FOR SEMAPHORE
  6482.     AH = 02h
  6483.     DX = semaphore number (0-63)
  6484. Return: AX = FFFFh bad semaphore number
  6485.          else  success
  6486. SeeAlso: AH=03h,AH=04h
  6487. --------T-6203-------------------------------
  6488. INT 62 - Cswitch - CHECK SEMAPHORE
  6489.     AH = 03h
  6490.     DX = semaphore number (0-63)
  6491. Return: AX = FFFFh not owned
  6492.          else  owned
  6493. SeeAlso: AH=02h,AH=04h
  6494. --------T-6204-------------------------------
  6495. INT 62 - Cswitch - TRIGGER SEMAPHORE
  6496.     AH = 04h
  6497.     DX = semaphore number (0-63)
  6498. Return: AX = FFFFh bad semaphore number
  6499.          else  success
  6500. SeeAlso: AH=02h,AH=03h
  6501. --------T-6205-------------------------------
  6502. INT 62 - Cswitch - SLEEP
  6503.     AH = 05h
  6504.     BX = seconds to sleep
  6505. SeeAlso: AH=01h,AH=06h,AH=08h"Cswitch"
  6506. --------T-6206-------------------------------
  6507. INT 62 - Cswitch - SUSPEND
  6508.     AH = 06h
  6509. SeeAlso: AH=05h,AH=08h"Cswitch"
  6510. --------T-6207-------------------------------
  6511. INT 62 - Cswitch - SPAWN
  6512.     AH = 07h
  6513.     ES:BX -> function address to start executing at
  6514.     CX = priority (1-10)
  6515. Return: AX = FFFDh  no free memory control blocks
  6516.        = FFFEh  no free task control blocks
  6517.        = FFFFh  not enough memory to create new task stack
  6518.        = >0        the tcb number of the new task, indicating no error
  6519. SeeAlso: AH=0Fh,AH=10h
  6520. --------T-6208-------------------------------
  6521. INT 62 - Cswitch - WAKE UP TASK
  6522.     AH = 08h
  6523.     BX = tcb identifier
  6524. SeeAlso: AH=05h,AH=06h
  6525. ----------6208--CXFFFE-----------------------
  6526. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - UNINSTALL/GET PSP ADDR
  6527.     AH = 08h
  6528.     CX = FFFEh
  6529.     DX = FFFFh
  6530. Return: AX = PSP address of resident DBLIBRARY
  6531. Note:    this call does not free the memory allocated to the TSR; the calling
  6532.       code must do the deallocation.
  6533. SeeAlso: INT 62"DBLIBRARY"
  6534. --------T-6209-------------------------------
  6535. INT 62 - Cswitch - SET PRIORITY
  6536.     AH = 09h
  6537.     BX = new base priority (1-10)
  6538. Note:    the lower the priority is numerically, the more often the task will run
  6539. --------T-620A-------------------------------
  6540. INT 62 - Cswitch - TEST MESSAGE QUEUE
  6541.     AH = 0Ah
  6542.     DX = queue number (0-63)
  6543. Return: AX = FFFFh bad queue number
  6544.        = 0000h nothing on queue
  6545.          else  number of bytes in first message in queue
  6546. SeeAlso: AH=0Bh,AH=0Ch
  6547. --------T-620B-------------------------------
  6548. INT 62 - Cswitch - SEND MESSAGE
  6549.     AH = 0Bh
  6550.     CX = number of bytes to write
  6551.     DS:SI -> buffer
  6552.     DX = queue number (0-63)
  6553. Return: AX = FFFEh triggered by something arriving, redo the call
  6554.        = FFFFh bad queue number
  6555.        = 0000h no message was on queue
  6556.          else  number of bytes in message
  6557. SeeAlso: AH=0Ah,AH=0Ch
  6558. --------T-620C-------------------------------
  6559. INT 62 - Cswitch - READ MESSAGE
  6560.     AH = 0Ch
  6561.     CX = number of bytes to read
  6562.     DS:SI -> buffer
  6563.     DX = queue number (0-63)
  6564. Return: AX = FFFFh bad queue number
  6565.          else  number of bytes transferred
  6566. SeeAlso: AH=0Ah,AH=0Bh
  6567. --------T-620D-------------------------------
  6568. INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
  6569.     AH = 0Dh
  6570. SeeAlso: AH=0Eh
  6571. --------T-620E-------------------------------
  6572. INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
  6573.     AH = 0Eh
  6574. SeeAlso: AH=0Dh
  6575. --------T-620F-------------------------------
  6576. INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
  6577.     AH = 0Fh
  6578.     ES:BX -> command line
  6579.     CX = priority (1-10)
  6580.     DX = background flag (nonzero allows loading to EMS)
  6581. Return: AX = 0000h task loader queue is full
  6582.        = 0001h  no error
  6583. SeeAlso: AH=07h,AH=10h,AH=13h
  6584. --------T-6210-------------------------------
  6585. INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
  6586.     AH = 10h
  6587. SeeAlso: AH=07h,AH=0Fh
  6588. --------T-6211-------------------------------
  6589. INT 62 - Cswitch - GET TCB INFORMATION
  6590.     AH = 11h
  6591.     ES:BX -> a pointer which will be set to the tcb address
  6592. Return: AX = tcb indentifier
  6593. SeeAlso: AH=12h
  6594. --------T-6212-------------------------------
  6595. INT 62 - Cswitch - GET TCB ADDRESS
  6596.     AH = 12h
  6597.     ES:BX -> a pointer which will be set to the tcb table address
  6598. Return: AX = tcb indentifier
  6599. SeeAlso: AH=11h
  6600. --------T-6213-------------------------------
  6601. INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
  6602.     AH = 13h
  6603. Return: AX = FFFCh no Memory Control Blocks available
  6604.        = FFFDh no TCBs available
  6605.        = FFFEh insufficient memory
  6606.        = FFFFh cannot open file
  6607.        = 0000h load in progress (not done yet)
  6608.          else  tcb indentifier
  6609. SeeAlso: AH=0Fh
  6610. --------R-6247-------------------------------
  6611. INT 62 - PC Tools v7 COMMUTE - ???
  6612.     AH = 47h
  6613.     AL = subfunction (00h-31h)
  6614.     ???
  6615.     CF set
  6616. Return: ???
  6617. --------R-6248-------------------------------
  6618. INT 62 - PC Tools v7 COMMUTE - ???
  6619.     AH = 48h
  6620.     AL = ???
  6621.     ???
  6622.     CF set
  6623. Return: ???
  6624. --------R-6249-------------------------------
  6625. INT 62 - PC Tools v7 COMMUTE - ???
  6626.     AH = 49h
  6627.     ???
  6628.     CF set
  6629. Return: ???
  6630. Note:    may be the same as AH=4Ch
  6631. --------R-624A-------------------------------
  6632. INT 62 - PC Tools v7 COMMUTE - ???
  6633.     AH = 4Ah
  6634.     AL = subfunction (00h-46h)
  6635.     ???
  6636.     CF set
  6637. Return: ???
  6638. --------R-624B--BX1234-----------------------
  6639. INT 62 - PC Tools v7 COMMUTE - ???
  6640.     AH = 4Bh
  6641.     BX = 1234h
  6642.     CX = 1234h
  6643.     ES = ???
  6644.     CF set
  6645. Return: ???
  6646. --------R-624C-------------------------------
  6647. INT 62 - PC Tools v7 COMMUTE - ???
  6648.     AH = 4Ch
  6649.     BL = subfunction
  6650.         00h ???
  6651.         02h ???
  6652. Return: CF clear if successful
  6653.     CF set on error
  6654. --------R-626262-----------------------------
  6655. INT 62 - PC Tools v7 COMMUTE - INSTALLATION CHECK
  6656.     AX = 6262h
  6657.     CF set
  6658. Return: AX = 0000h
  6659.     BX = segment of resident code's PSP
  6660. --------N-62FE-------------------------------
  6661. INT 62 - BW-TCP - ETHDRV.SYS - MAP EMS PAGE FRAME
  6662.     AH = FEh
  6663.     AL = direction
  6664.         00h map in driver's memory block
  6665.         01h map out driver's memory block
  6666. Return: CF clear if successful
  6667.     CF set on error
  6668.         AL = error code
  6669. Note:    this function is supported by at least the SLIP and ODI versions of
  6670.       ETHDEV.SYS
  6671. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62"BW-TCP",INT 63"BW-TCP"
  6672. --------*-63---------------------------------
  6673. INT 63 - reserved for user interrupt
  6674. --------d-63---------------------------------
  6675. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  6676. Notes:    this vector stores the last four bytes of the parameter table for
  6677.       hard disk 0
  6678. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
  6679. ----------63---------------------------------
  6680. INT 63 - Oracle SQL Protected Mode Executive - ???
  6681. --------d-63---------------------------------
  6682. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  6683.    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if INT 13
  6684.    has been moved there) and places the old value here
  6685. ----------63---------------------------------
  6686. INT 63 - Kofax KF9X00 image manipulation card interface
  6687. --------Q-63---------------------------------
  6688. INT 63 - DESQview/X - SOCKET API
  6689. Notes:    parameters are passed by patching!! data field immediately following
  6690.       the entry point, as detailed below; the preferred method for calling
  6691.       the socket API is via INT 15/AX=DE2Eh
  6692.     the installation check consists of testing for the string "dvxunix"
  6693.       (yes, lowercase) at offset 9 from the interrupt handler start
  6694. SeeAlso: INT 15/AX=DE2Eh,INT BE"DESQview"
  6695. Index:    installation check;DESQview/X socket interface
  6696.  
  6697. Format of interrupt handler entry:
  6698. Offset    Size    Description
  6699.  00h  3 BYTEs    near jump or short jump + NOP to actual interrupt handler
  6700.  03h    WORD    offset from following pointer for initial top of local stack
  6701.  05h    DWORD    pointer to argument/stack block (see INT 15/AX=DE2Eh)
  6702.  09h  7 BYTEs    signature "dvxunix"
  6703. --------b-6300-------------------------------
  6704. INT 63 - HP 100LX - MAP HIGH MEMORY
  6705.     AH = 00h
  6706.     AL = physical page (00h seg C000, 01h seg C400h, ...)
  6707.     BX = zero-based logical page
  6708.     CX = page number
  6709.     DX = device ID (00h system ROM, 05h plugin, etc.)
  6710. Return: ???
  6711. SeeAlso: AH=01h
  6712. --------N-6300-------------------------------
  6713. INT 63 - BW-TCP - TCPIP.SYS - ???
  6714.     AH = 00h
  6715.     DS:DX -> DWORD containing IP address (big-endian)
  6716.     ???
  6717. Return: ???
  6718. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  6719.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  6720.       consecutive interrupt (64h by default) if it is loaded
  6721. SeeAlso: AH=01h"BW-TCP",AH=02h"BW-TCP"
  6722. --------b-6301-------------------------------
  6723. INT 63 - HP 100LX - SAVE/RESTORE MEMORY MAP
  6724.     AH = 01h
  6725.     AL = function (00h save, 01h restore)
  6726.     ???
  6727. Return: ???
  6728. --------N-6301-------------------------------
  6729. INT 63 - BW-TCP - TCPIP.SYS - ???
  6730.     AH = 01h
  6731.     ES:BX -> ???
  6732.     ???
  6733. Return: ???
  6734. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  6735.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  6736.       consecutive interrupt (64h by default) if it is loaded
  6737. SeeAlso: AH=00h"BW-TCP",AH=02h"BW-TCP"
  6738. --------N-6302-------------------------------
  6739. INT 63 - BW-TCP - TCPIP.SYS - ???
  6740.     AH = 02h
  6741.     ???
  6742. Return: ???
  6743. SeeAlso: AH=00h"BW-TCP",AH=01h"BW-TCP"
  6744. --------N-6303-------------------------------
  6745. INT 63 - BW-TCP - TCPIP.SYS - GET ???
  6746.     AH = 03h
  6747.     DS:SI -> buffer for DWORD ???
  6748.     ???
  6749. Return: ???
  6750. --------N-6304-------------------------------
  6751. INT 63 - BW-TCP - TCPIP.SYS - ???
  6752.     AH = 04h
  6753.     ???
  6754. Return: ???
  6755. --------N-6305-------------------------------
  6756. INT 63 - BW-TCP - TCPIP.SYS - ???
  6757.     AH = 05h
  6758.     DS:BX -> ???
  6759.     ES:SI -> ???
  6760. Return: ???
  6761. --------N-6306-------------------------------
  6762. INT 63 - BW-TCP - TCPIP.SYS - ???
  6763.     AH = 06h
  6764.     ???
  6765. Return: ???
  6766. --------N-6307-------------------------------
  6767. INT 63 - BW-TCP - TCPIP.SYS - ???
  6768.     AH = 07h
  6769.     ???
  6770. Return: ???
  6771. --------N-6308-------------------------------
  6772. INT 63 - BW-TCP - TCPIP.SYS - ???
  6773.     AH = 08h
  6774.     DS:BX -> DWORD ???
  6775.     ???
  6776. Return: ???
  6777. --------N-6309-------------------------------
  6778. INT 63 - BW-TCP - TCPIP.SYS - INSTALL ??? HANDLERS
  6779.     AH = 09h
  6780.     BL = handler type
  6781.     ES:SI -> FAR handler of specified type
  6782. Return: ???
  6783. SeeAlso: AH=0Ah,AH=0Dh
  6784. --------N-630A-------------------------------
  6785. INT 63 - BW-TCP - TCPIP.SYS - DELETE ??? HANDLERS
  6786.     AH = 0Ah
  6787.     BL = handler type
  6788. Return: CF clear if successful
  6789.     CF set on error (no handler of specified type installed)
  6790. SeeAlso: AH=09h
  6791. --------N-630B-------------------------------
  6792. INT 63 - BW-TCP - TCPIP.SYS - ???
  6793.     AH = 0Bh
  6794.     AL = ???
  6795.     DL = ???
  6796.     DS:BX -> ???
  6797.     ES:SI -> ???
  6798. Return: ???
  6799. --------N-630C-------------------------------
  6800. INT 63 - BW-TCP - TCPIP.SYS - ???
  6801.     AH = 0Ch
  6802.     ???
  6803. Return: ???
  6804. --------N-630D-------------------------------
  6805. INT 63 - BW-TCP - TCPIP.SYS - INSTALL DEFAULT ??? HANDLER
  6806.     AH = 0Dh
  6807.     ???
  6808. Return: ???
  6809. Note:    if not already installed, installs a type 06h handler with AH=09h
  6810. SeeAlso: AH=09h
  6811. --------N-630E-------------------------------
  6812. INT 63 - BW-TCP - TCPIP.SYS - CLOSE NETWORK DESCRIPTOR
  6813.     AH = 0Eh
  6814.     ???
  6815. Return: ???
  6816. SeeAlso: INT 61/AH=08h"PC/TCP",INT 61/AH=09h"PC/TCP",INT 61/AH=18h
  6817. --------N-630F-------------------------------
  6818. INT 63 - BW-TCP - TCPIP.SYS - ???
  6819.     AH = 0Fh
  6820.     AL = ???
  6821.     SI = ???
  6822.     DS:DI -> ???
  6823.     ???
  6824. Return: ???
  6825. --------N-6310-------------------------------
  6826. INT 63 - BW-TCP - TCPIP.SYS - ???
  6827.     AH = 10h
  6828.     DS:DI -> ???
  6829.     ???
  6830. Return: ???
  6831. --------N-6311-------------------------------
  6832. INT 63 - BW-TCP - TCPIP.SYS - ???
  6833.     AH = 11h
  6834.     ???
  6835. Return: ???
  6836. --------N-6312-------------------------------
  6837. INT 63 - BW-TCP - TCPIP.SYS - LISTEN FOR INCOMING CONNECTIONS
  6838.     AH = 12h
  6839.     DS:SI -> ???
  6840.     ES:BP -> ???
  6841. Return: ???
  6842. SeeAlso: INT 61/AH=23h
  6843. --------N-6313-------------------------------
  6844. INT 63 - BW-TCP - TCPIP.SYS - NOP
  6845.     AH = 13h
  6846. Return: nothing
  6847. --------N-6314-------------------------------
  6848. INT 63 - BW-TCP - TCPIP.SYS - OPEN NETWORK CONNECTION
  6849.     AH = 14h
  6850.     BX = network descriptor???
  6851.     DS:SI -> ???
  6852.     ES:BP -> ???
  6853. Return: ???
  6854. SeeAlso: INT 61/AH=13h"PC/TCP",INT 62/AH=13h"ETHDEV"
  6855. --------N-6315-------------------------------
  6856. INT 63 - BW-TCP - TCPIP.SYS - ???
  6857.     AH = 15h
  6858.     DS:DI -> ???
  6859.     ???
  6860. Return: ???
  6861. --------N-6316-------------------------------
  6862. INT 63 - BW-TCP - TCPIP.SYS - RESET NETWORK CONNECTION
  6863.     AH = 16h
  6864.     DS:DI -> ???
  6865. Return: ???
  6866. Note:    calls AH=17h after preprocessing
  6867. SeeAlso: AH=17h,INT 61/AH=19h"PC/TCP"
  6868. --------N-6317-------------------------------
  6869. INT 63 - BW-TCP - TCPIP.SYS - ???
  6870.     AH = 17h
  6871.     DS:DI -> ???
  6872.     ???
  6873. Return: ???
  6874. SeeAlso: AH=18h
  6875. --------N-6318-------------------------------
  6876. INT 63 - BW-TCP - TCPIP.SYS - ???
  6877.     AH = 18h
  6878.     DS:DI -> ???
  6879.     ???
  6880. Return: ???
  6881. Note:    same as AH=17h, except performed with interrupts disabled
  6882. SeeAlso: AH=17h
  6883. --------N-6319-------------------------------
  6884. INT 63 - BW-TCP - TCPIP.SYS - WRITE TO THE NETWORK
  6885.     AH = 19h
  6886.     DS:DI -> ???
  6887.     ???
  6888. Return: BX = number of bytes NOT written
  6889.     ???
  6890. Note:    calls AH=17h with interrupts disabled and ??? set to 01h
  6891. SeeAlso: AH=1Ah,AH=1Bh,INT 61/AH=1Ah"PC/TCP"
  6892. --------N-631A-------------------------------
  6893. INT 63 - BW-TCP - TCPIP.SYS - READ FROM THE NETWORK
  6894.     AH = 1Ah
  6895.     CX = maximum number of bytes to read
  6896.     ES:BP -> ???
  6897.     ???
  6898. Return: CX = number of bytes actually read
  6899.     ???
  6900. SeeAlso: AH=19h,INT 61/AH=1Bh"PC/TCP"
  6901. --------N-631B-------------------------------
  6902. INT 63 - BW-TCP - TCPIP.SYS - ???
  6903.     AH = 1Bh
  6904.     CX = ???
  6905.     ES:BP -> ???
  6906. Return: DX = ???
  6907.     ???
  6908. --------N-631C-------------------------------
  6909. INT 63 - BW-TCP - TCPIP.SYS - ???
  6910.     AH = 1Ch
  6911.     DS:DI -> ???
  6912.     ???
  6913. Return: ???
  6914. Note:    calls AH=17h with ???
  6915. SeeAlso: AH=17h
  6916. --------N-631D-------------------------------
  6917. INT 63 - BW-TCP - TCPIP.SYS - ???
  6918.     AH = 1Dh
  6919.     ???
  6920. Return: ???
  6921. --------N-631E-------------------------------
  6922. INT 63 - BW-TCP - TCPIP.SYS - ???
  6923.     AH = 1Eh
  6924.     DS:BX -> DWORD ???
  6925.     ???
  6926. Return: ???
  6927. --------N-631F-------------------------------
  6928. INT 63 - BW-TCP - TCPIP.SYS - INSTALL ???
  6929.     AH = 1Fh
  6930.     BX = identifier???
  6931.     ES:SI -> ???
  6932. Return: CF clear if successful
  6933.     CF set on error (out of slots)
  6934. SeeAlso: AH=20h
  6935. --------N-6320-------------------------------
  6936. INT 63 - BW-TCP - TCPIP.SYS - DELETE ???
  6937.     AH = 20h
  6938.     BX = identifier of ??? to be deleted
  6939. Return: CF clear if successful
  6940.     CF set on error (not installed)
  6941. SeeAlso: AH=1Fh
  6942. --------N-6321-------------------------------
  6943. INT 63 - BW-TCP - TCPIP.SYS - ???
  6944.     AH = 21h
  6945.     ES:SI -> ???
  6946. Return: ???
  6947. SeeAlso: INT 61/AH=1Ch"PC/TCP"
  6948. --------N-6322-------------------------------
  6949. INT 63 - BW-TCP - TCPIP.SYS - REMOVE ??? HANDLER
  6950.     AH = 22h
  6951. Return: CF clear
  6952. Note:    decrements a counter if not already zero, and calls AH=0Ah with BL=11h
  6953.       if the counter reaches zero
  6954. --------N-6323-------------------------------
  6955. INT 63 - BW-TCP - TCPIP.SYS - ???
  6956.     AH = 23h
  6957.     DS:BX -> ???
  6958.     ES:SI -> 6-byte buffer for ???
  6959. Return: CF clear if successful
  6960.     CF set on error
  6961. --------N-6324-------------------------------
  6962. INT 63 - BW-TCP - TCPIP.SYS - GET SOCKET
  6963.     AH = 24h
  6964. Return: AX = socket number (0400h-FFFFh)
  6965. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  6966.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  6967.       consecutive interrupt (64h by default) if it is loaded
  6968. SeeAlso: INT 62"BW-TCP",INT 64"BW-NFS"
  6969. --------N-6325-------------------------------
  6970. INT 63 - BW-TCP - TCPIP.SYS - GET INTERNET ADDRESS
  6971.     AH = 25h
  6972. Return: CL:CH:DL:DH = caller's Internet address
  6973. SeeAlso: AH=26h,INT 61/AH=05h"PC/TCP"
  6974. --------N-6326-------------------------------
  6975. INT 63 - BW-TCP - TCPIP.SYS - SET INTERNET ADDRESS???
  6976.     AH = 26h
  6977.     CL:CH:DL:DH = Internet address
  6978. Return: nothing
  6979. Note:    this function sets a different variable than AH=25h returns
  6980. SeeAlso: AH=25h
  6981. --------N-6327-------------------------------
  6982. INT 63 - BW-TCP - TCPIP.SYS - SET ???
  6983.     AH = 27h
  6984.     BX = ???
  6985.     ES:SI -> ???
  6986. Return: ???
  6987. --------N-6328-------------------------------
  6988. INT 63 - BW-TCP - TCPIP.SYS - ???
  6989.     AH = 28h
  6990.     ???
  6991. Return: ???
  6992. --------N-6329-------------------------------
  6993. INT 63 - BW-TCP - TCPIP.SYS - ???
  6994.     AH = 29h
  6995.     ???
  6996. Return: ???
  6997. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  6998.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  6999.       consecutive interrupt (64h by default) if it is loaded
  7000. --------*-64---------------------------------
  7001. INT 64 - reserved for user interrupt
  7002. --------d-64---------------------------------
  7003. INT 64 - Adaptec controllers - DRIVE 1 DATA
  7004. Notes:    this vector stores the first four bytes of the parameter table for
  7005.       hard disk 1
  7006.     these vectors are used by the following Adaptec controllers:
  7007.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  7008.     these vectors are NOT used by the following Adaptec controllers:
  7009.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  7010. SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  7011. ----------64---------------------------------
  7012. INT 64 - Oracle SQL Protected Mode Executive - ???
  7013. --------N-64---------------------------------
  7014. INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
  7015. Note:    equivalent to INT 7A for NetWare versions through 2.0a only; later
  7016.       versions do not use this interrupt for IPX/SPX access, instead
  7017.       getting an entry point from INT 2F/AX=7A00h
  7018. SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
  7019. --------h-64---------------------------------
  7020. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  7021. SeeAlso: INT 65"DG10",INT 66"DG10"
  7022. --------r-64---------------------------------
  7023. INT 64 - Extended Batch Language v3.14+
  7024.     AH = function
  7025.         00h to 5Fh chained to previous handler
  7026.         60h to 6Ch reserved, return immediately
  7027.         80h to FFh chained to previous handler
  7028.         6Dh (v4.01+) insert tone in queue
  7029.         AL = ???
  7030.         CX = frequency in Hertz
  7031.         DL = duration in clock ticks
  7032.         Return: AL = 00h if note stored
  7033.                = 01h if no room to store
  7034.         6Eh clear ??? counter/flag
  7035.         6Fh return counter/flag that AH=6Eh clears
  7036.         70h ???
  7037.         AL = ???
  7038.         71h ???
  7039.         AL = ???
  7040.         72h ???
  7041.         73h insert byte at end of keyboard buffer
  7042.         AL = byte to insert
  7043.         Return: AL = 00h if byte inserted
  7044.                = 01h if no room to store
  7045.         74h insert byte at front of keyboard buffer
  7046.         AL = byte to insert
  7047.         Return: AL = 00h if byte inserted
  7048.                = 01h if no room to store
  7049.         75h ???
  7050.         76h get keyboard "stack" status
  7051.         AL = 'K' if kbd read will read physical keyboard
  7052.              'S' if it will read EBL internal keyboard buffer
  7053.         AH = ???
  7054.         77h clear internal keyboard buffer
  7055.         78h ???
  7056.         AL = ???
  7057.         79h ???
  7058.         7Ah ???
  7059.         AL = ???
  7060.         7Bh ???
  7061.         AL = ???
  7062.         7Ch ???
  7063.         AL = ???
  7064.         7Dh ???
  7065.         AL = ???
  7066.         7Eh clear buffer for ???
  7067.         7Fh installation check
  7068.         Return: CX = version in BCD
  7069.             DI = segment of ???
  7070.             BX = segment of next program's PSP???
  7071. Program: Extended Batch Language is a batch-file enhancer by Seaware
  7072. Notes:    the chaining does not check whether the interrupt had been hooked
  7073.       before, so if you try to chain when the previous vector was
  7074.       0000h:0000h, you'll be in trouble
  7075.     functions 72h and 7Ah-7Dh appear to be interfaces to the optional
  7076.       floating-point and extended function packages
  7077. Index:    installation check;EBL|installation check;Extended Batch Language
  7078. --------d-64---------------------------------
  7079. INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7080. Note:    This vector is overwritten by Pdisk to install custom harddrive types.
  7081.       It can either destroy 4 vectors and take no memory or TSR and take
  7082.       up some memory.
  7083. SeeAlso: INT 65"Pdisk"
  7084. --------N-64---------------------------------
  7085. INT 64 - BW-NFS - BWRPC API
  7086.     AH = function (01h-07h,0Ch,10h,11h,FEh)
  7087. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  7088.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  7089.       consecutive interrupt (64h by default) if it is loaded
  7090. SeeAlso: INT 62"BW-TCP",INT 63"BW-TCP"
  7091. --------*-65---------------------------------
  7092. INT 65 - reserved for user interrupt
  7093. --------d-65---------------------------------
  7094. INT 65 - Adaptec controllers - DRIVE 1 DATA
  7095. Note:    this vector stores the second four bytes of the parameter table for
  7096.       hard disk 1
  7097. SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  7098. --------h-65---------------------------------
  7099. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  7100. SeeAlso: INT 64"DG10",INT 66"DG10"
  7101. --------N-65---------------------------------
  7102. INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
  7103. --------U-65---------------------------------
  7104. INT 65 - SD.COM v6.2
  7105.    The unregistered version of SD62.COM uses the low byte of this vector to
  7106.    count the number of invocations, displaying a registration reminder each
  7107.    time after the 20th use.
  7108. --------d-65---------------------------------
  7109. INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7110. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  7111. --------s-65---------------------------------
  7112. INT 65 - Ad Lib SOUND.COM - INTERFACE
  7113.     SI = function number (see also entries below)
  7114.         0000h Init
  7115.         0002h RelTimeStart
  7116.         0003h SetState
  7117.         0004h GetState
  7118.         0005h Flush
  7119.         0006h SetMode
  7120.         0007h GetMode
  7121.         0008h SetRelVolume
  7122.         0009h SetTempo
  7123.         000Ah SetTranspose
  7124.         000Bh GetTranspose
  7125.         000Ch SetActVoice
  7126.         000Dh GetActVoice
  7127.         000Eh PlayNoteDel
  7128.         000Fh PlayNote
  7129.         0010h SetTimbre
  7130.         0011h SetPitch
  7131.         0012h SetTickBeat
  7132.         0013h NoteOn
  7133.         0014h NoteOff
  7134.         0015h Timbre
  7135.         0016h SetPitchBend
  7136.         0017h WaveForm
  7137.     ES:BX -> arguments
  7138. Note:    the installation check consists of checking for the signature block
  7139.       immediately preceding the interrupt handler (see below)
  7140. SeeAlso: SI=8000h
  7141. Index:    installation check;Ad Lib SOUND.COM
  7142.  
  7143. Format of signature block:
  7144. Offset    Size    Description
  7145.  00h    WORD    version number
  7146.  02h 19 BYTEs    "SOUND-DRIVER-AD-LIB"
  7147.  15h    BYTE    01h
  7148.  16h    BYTE    01h
  7149.  17h    BYTE    00h
  7150. --------s-65----SI0000-----------------------
  7151. INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
  7152.     SI = 0000h
  7153. --------s-65----SI0003-----------------------
  7154. INT 65 - Ad Lib SOUND.COM - SET STATE
  7155.     SI = 0003h
  7156.     ES:BX -> WORD state = 0000h disabled
  7157.                 = 0001h enabled
  7158. SeeAlso: SI=0004h
  7159. --------s-65----SI0004-----------------------
  7160. INT 65 - Ad Lib SOUND.COM - GET STATE
  7161.     SI = 0004h
  7162. Return: AX = 0000h all done playing sounds
  7163.        = else  still playing sounds
  7164. SeeAlso: SI=0003h
  7165. --------s-65----SI0006-----------------------
  7166. INT 65 - Ad Lib SOUND.COM - SET MODE
  7167.     SI = 0006h
  7168.     ES:BX -> WORD mode = 0000h melodic
  7169.                = 0001h percussive
  7170. SeeAlso: SI=0007h
  7171. --------s-65----SI0007-----------------------
  7172. INT 65 - Ad Lib SOUND.COM - GET MODE
  7173.     SI = 0007h
  7174. Return: AX = 0000h melodic
  7175.        = 0001h percussive
  7176. SeeAlso: SI=0006h
  7177. --------s-65----SI000C-----------------------
  7178. INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
  7179.     SI = 000Ch
  7180.     ES:BX -> WORD voice = 0000h to 0008h
  7181. SeeAlso: SI=000Dh
  7182. --------s-65----SI000D-----------------------
  7183. INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
  7184.     SI = 000Dh
  7185. Return: AX = voice (0000h to 0008h)
  7186. SeeAlso: SI=000Ch
  7187. --------s-65----SI8000-----------------------
  7188. INT 65 u - Media Vision FM.COM v4.1a+ - GET INTERNAL DATA STRUCTURES
  7189.     SI = 8000h
  7190. Return: DX:AX -> internal data structures
  7191. Program: FM.COM is an Ad Lib SOUND.COM-compatible driver for Media Vision's
  7192.       Pro Audio Spectrum sound boards
  7193. SeeAlso: SI=8001h
  7194. --------s-65----SI8001-----------------------
  7195. INT 65 u - Media Vision FM.COM v4.1a+ - GET VOICE COUNT
  7196.     SI = 8001h
  7197. Return: AX = ???
  7198.     DX = number of voices??? (09h or 0Bh)
  7199. SeeAlso: SI=8000h
  7200. --------s-65----SI8002-----------------------
  7201. INT 65 - Media Vision FM.COM v4.1a+ - START BACKGROUND FM SOUNDS
  7202.     SI = 8002h
  7203. SeeAlso: SI=8003h
  7204. --------s-65----SI8003-----------------------
  7205. INT 65 - Media Vision FM.COM v4.1a+ - STOP BACKGROUND FM SOUNDS
  7206.     SI = 8003h
  7207. SeeAlso: SI=8002h
  7208. --------s-65----SI8004-----------------------
  7209. INT 65 U - Media Vision FM.COM v4.1a+ - GET ???
  7210.     SI = 8004h
  7211. Return: AX = ??? (0280h)
  7212.     DX = ??? (01A0h)
  7213. --------s-65----SI8005-----------------------
  7214. INT 65 U - Media Vision FM.COM v4.1a+ - ???
  7215.     SI = 8005h
  7216.     ???
  7217. Return: ???
  7218. SeeAlso: SI=8000h
  7219. --------S-65---------------------------------
  7220. INT 65 U - EZRECV v1.0 - API
  7221.     AX = function
  7222.         0000h ???
  7223.         Return: AX = ??? or FFFFh
  7224.         0001h ???
  7225.         Return: AX = status (0000h or 0001h)
  7226.         0002h ???
  7227.         Return: AX = status (0000h or 0001h)
  7228.         0003h set ??? to 0001h
  7229.         Return: AX = 0000h
  7230.         0004h ???
  7231.         Return: AX = ???
  7232. Return: BH = COM port being used
  7233.     BL = speed???
  7234.     CH = ???
  7235.     CL = ???
  7236.     DX = ???
  7237.     DS = ???
  7238.     ES = EZRECV data segment
  7239. Program: EZRECV is a background Zmodem file receiver by Express Consulting
  7240. --------*-66---------------------------------
  7241. INT 66 - reserved for user interrupt
  7242. --------d-66---------------------------------
  7243. INT 66 - Adaptec controllers - DRIVE 1 DATA
  7244. Note:    this vector stores the third four bytes of the parameter table for
  7245.       hard disk 1
  7246. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
  7247. --------h-66---------------------------------
  7248. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  7249. SeeAlso: INT 64"DG10"
  7250. --------N-66---------------------------------
  7251. INT 66 C - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
  7252. Program: TurboNET is a NetBIOS-based file redirector and server
  7253. Note:    hooked but not used (IRET) by both redirector and server; called from
  7254.       server's INT 28 handler
  7255. SeeAlso: INT 2F/AX=8100h
  7256. --------d-66---------------------------------
  7257. INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7258. SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
  7259. --------W-66---------------------------------
  7260. INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
  7261. Note:    This Windows 3.x Virtual Device Driver implements a virtual timer
  7262.       which will expire and call INT 66.  This timer can be used to
  7263.       calculate elapsed execution time etc.
  7264. --------K-66---------------------------------
  7265. INT 66 - Newkey v5.4 - INSTALLATION VECTOR
  7266. Return: immediately (IRET)
  7267. Program: Newkey is a shareware keyboard macro program by Frank A. Bell
  7268. Note:    the installation check consists of testing for the signature bytes
  7269.       FDh FCh FFh FEh at offset 03h in the interrupt handlers segment;
  7270.       Newkey may use any interrupt from 60h through 67h and will install
  7271.       on the highest vector in this range which is unused (normally 66h)
  7272. BUG:    the code obviously intends to use INT F0-FE, INT 70-77, and INT 68-6F
  7273.       before falling back to INT 60-67, but only uses the last of these
  7274.       ranges in v5.4
  7275. SeeAlso: INT 2F/AX=E300h
  7276. Index: installation checks;Newkey|Newkey;installation check
  7277. --------F-6601-------------------------------
  7278. INT 66 - BitFax Scheduler - SET MODE???
  7279.     AH = 01h
  7280. SeeAlso: AH=02h
  7281. --------F-6602-------------------------------
  7282. INT 66 - BitFax Scheduler - SET MODE???
  7283.     AH = 02h
  7284. SeeAlso: AH=01h
  7285. --------F-6603-------------------------------
  7286. INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS
  7287.     AH = 03h
  7288.     ???
  7289. Return: ???
  7290. SeeAlso: AH=05h
  7291. --------F-6604-------------------------------
  7292. INT 66 - BitFax Scheduler - GET STATUS???
  7293.     AH = 04h
  7294. Return: AX = ??? (0000h or 0001h)
  7295.     DX = BitSched version???  (for versions >= 3.00)
  7296.         9796h (ver. 3.00)
  7297.         97E6h (ver. 3.02)
  7298.         92D0h (ver. 3.04.06)
  7299.         9510h (ver. 3.06.02)
  7300. SeeAlso: AH=06h,AX=3345h,INT 2F/AX=8000h"FaxBIOS"
  7301. --------F-6605-------------------------------
  7302. INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX
  7303.     AH = 05h
  7304.     BX:CX -> command block (see below)
  7305.     ???
  7306. Return: ???
  7307. SeeAlso: AH=03h
  7308.  
  7309. Format of command block:
  7310. Offset    Size    Description
  7311.  00h 18 BYTEs    configuration bytes???
  7312.  12h    BYTEs    ASCIZ temporary file name to place converted fax
  7313.  52h    BYTEs    ASCIZ directory containing BitFax executables
  7314.  92h    BYTEs    ASCIZ telephone number
  7315.  C2h    BYTE    00h don't send cover page
  7316.         01h send cover page
  7317.  C3h 15 BYTEs    configuration bytes???
  7318.  E2h    BYTEs    ASCIZ path of BITFAX.TRA file (containing additional
  7319.         configuration information???)
  7320. 122h    BYTEs    configuration bytes???
  7321. 12Ch    BYTE    00h don't send cover page
  7322.         01h send cover page
  7323. 12Dh  7 BYTEs    configuration bytes???
  7324. 134h    BYTEs    ASCIZ path of file to send
  7325. 174h    BYTEs    more configuration bytes???
  7326.     ???
  7327. --------F-6606-------------------------------
  7328. INT 66 - BitFax Scheduler - SET MODE???
  7329.     AH = 06h
  7330. Return: DX = BitSched version??? (same as AH=04h)
  7331. SeeAlso: AH=04h
  7332. --------s-660688-----------------------------
  7333. INT 66 - IBMSND driver - PLAY 8-BIT DIGITIZED SOUND
  7334.     AX = 0688h
  7335.     DS:SI -> SNDSTRUC (see below)
  7336. Return: ???
  7337. Program: The IBMSND driver is part of John W. Ratcliff's
  7338.        The IBM Digitized Sound Package
  7339. Note:    the installation check consists of looking for a valid signature
  7340.       string six bytes prior to the interrupt handler; this string may
  7341.       be either "KERN" or "MIDI" (in the latter case, call AX=0701h to
  7342.       determine whether IBMSND is installed)
  7343. SeeAlso: AX=068Bh,AX=068Fh,AX=0701h
  7344.  
  7345. Format of SNDSTRUC:
  7346. Offset    Size    Description
  7347.  00h    DWORD    -> audio data
  7348.  04h    WORD    length of audio data in bytes
  7349.  06h    DWORD    -> playback status flag
  7350.  0Ah    WORD    playback frequency
  7351. --------s-660689-----------------------------
  7352. INT 66 - IBMSND driver - REPORT SOUND DRIVER STATUS
  7353.     AX = 0689h
  7354. Return: AX = status
  7355.         0000h no sound playing
  7356.         0001h sound effect is currently playing
  7357. SeeAlso: AX=0688h,AX=068Bh,AX=068Ch
  7358. --------s-66068A-----------------------------
  7359. INT 66 - IBMSND driver - PREFORMAT SOUND
  7360.     AX = 068Ah
  7361.     DS:SI -> SNDSTRUC (see AX=0688h)
  7362. Desc:    convert audio data into output hardware format
  7363. SeeAlso: AX=068Bh
  7364. --------s-66068B-----------------------------
  7365. INT 66 - IBMSND driver - PLAY PREFORMATTED SOUND
  7366.     AX = 068Bh
  7367.     DS:SI -> SNDSTRUC (see AX=0688h)
  7368. Return: AX = ???
  7369. SeeAlso: AX=0688h,AX=068Ah,AX=068Fh
  7370. --------s-66068C-----------------------------
  7371. INT 66 - IBMSND driver - REPORT AUDIO DRIVER CAPABILITIES
  7372.     AX = 068Ch
  7373. Return: AX = capabilities (see below)
  7374.     DX = playback rate if fixed-frequency playback
  7375. SeeAlso: AX=0689h,AX=068Dh
  7376.  
  7377. Bitfields for capabilities:
  7378.  bit 0    can play audio in background
  7379.  bit 1    data is massaged
  7380.  bit 2    driver plays at fixed frequency, resampling input data to fit
  7381.  bit 3    driver uses timer interrupt
  7382. --------s-66068D-----------------------------
  7383. INT 66 - IBMSND driver - REPORT CURRENT SAMPLE ADDRESS
  7384.     AX = 068Dh
  7385. Return: AX = current playback address
  7386. Desc:    determine what point in the audio data the playback has reached, for
  7387.       synchronization with video or animation effects
  7388. Notes:    this function applies to background playback only
  7389.     the reported address may be an approximation rather than the exact
  7390.       address
  7391. SeeAlso: AX=068Ch,AX=0691h
  7392. --------s-66068E-----------------------------
  7393. INT 66 - IBMSND driver - SET CALLBACK ADDRESS
  7394.     AX = 068Eh
  7395.     BX:DX -> callback function
  7396.         0000h:0000h to disable callback
  7397.     DS = value to load into DS when calling the callback function
  7398. Desc:    specify the function to be called when playback of a sound effect is
  7399.       completed
  7400. Note:    the callback function will typically be called during a hardware
  7401.       interrupt, so all the usual precautions should be taken except for
  7402.       preserving registers
  7403. SeeAlso: AX=0691h
  7404. --------s-66068F-----------------------------
  7405. INT 66 - IBMSND driver - STOP CURRENT SOUND
  7406.     AX = 068Fh
  7407. Desc:    cause any currently-playing sound effect to be terminated
  7408. SeeAlso: AX=0688h,AX=068Bh
  7409. --------s-660690-----------------------------
  7410. INT 66 - IBMSND driver - "SetAudioHardware" SET UP HARDWARE INFO [obsolete]
  7411.     AX = 0690h
  7412. Note:    this function is no longer implemented
  7413. --------s-660691-----------------------------
  7414. INT 66 - IBMSND driver - REPORT CALLBACK ADDRESS
  7415.     AX = 0691h
  7416. Return: AX:DX -> current callback function
  7417.     BX = original caller's DS register
  7418. Program: The IBMSND driver is part of John W. Ratcliff's
  7419.        The IBM Digitized Sound Package
  7420. SeeAlso: AX=068Eh
  7421. --------s-660701-----------------------------
  7422. INT 66 - IBM Digitized Sound Package MIDI driver - GET DIGITIZED SOUND CAPABIL
  7423.     AX = 0701h
  7424. Return: AX = digitized sound capabilities
  7425.         0000h if digitized sound driver (functions 06xxh) not available
  7426. Note:    the installation check for the MIDI driver is to test for the signature
  7427.       "MIDI" six bytes before the interrupt handler
  7428. SeeAlso: AX=0688h
  7429. --------F-663345-----------------------------
  7430. INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
  7431.     AX = 3345h
  7432. Return: AX = FFFFh error removing TSR
  7433. Note:    the installation check consists of checking for the signature
  7434.       "BitFax Scheduler" beginning two bytes past the interrupt handler
  7435. SeeAlso: AH=04h,INT 2F/AH=2Ah,INT 2F/AX=CB00h
  7436. Index:    installation check;BitFax Scheduler
  7437. --------t-66FFFBBXFFFB-----------------------
  7438. INT 66 - MicroHelp Stay-Res Plus - ???
  7439.     AX = FFFBh
  7440.     BX = FFFBh
  7441.     ???
  7442. Return: ???
  7443. SeeAlso: AX=FFFEh,INT 2D"AMIS"
  7444. --------t-66FFFEBXFFFE-----------------------
  7445. INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
  7446.     AX = FFFEh
  7447.     BX = FFFEh
  7448. Return: only if unsuccessful
  7449. Notes:    installation check is for the interrupt handler to begin with the bytes
  7450.       FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
  7451.       appear at offset 0005h (older versions) or the offset returned by
  7452.       AX=FFFFh/BX=FFF0h in the interrupt handler segment.
  7453.     Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
  7454.       and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
  7455. SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
  7456. Index:    installation check;MicroHelp Stay-Res|installation check;ThesPlus
  7457. Index:    installation check;Personal Calendar|installation check;CAL
  7458. --------t-66FFFFBXFFF0-----------------------
  7459. INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
  7460.     AX = FFFFh
  7461.     BX = FFF0h
  7462. Return: DI = offset of program name in interrupt handler segment
  7463. SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
  7464. --------d-67---------------------------------
  7465. INT 67 - Adaptec controllers - DRIVE 1 DATA
  7466. Note:    this vector stores the last four bytes of the parameter table for
  7467.       hard disk 1
  7468. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
  7469. --------d-67---------------------------------
  7470. INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7471. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  7472. --------I-67---------------------------------
  7473. INT 67 - Sangoma CCPOP 3270 resident module
  7474. SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
  7475. --------U-67---------------------------------
  7476. INT 67 - CUCKOO.COM - INSTALLATION CHECK
  7477. Program: CUCKOO is a resident on-screen clock with optional hourly chime or
  7478.       cuckoo by an unknown author with revisions by Thomas A. Lundin
  7479. Note:    this is not a vector; when loaded for the first time, CUCKOO.COM uses
  7480.       the last unused (0000h:0000h) vector in the range 60h-67h to store
  7481.       the signature value 434Ch:4F4Bh ('CLOK')
  7482. --------N-6700-------------------------------
  7483. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  7484.     AH = 00h
  7485.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  7486. Return: AL = status (see below)
  7487. SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
  7488.  
  7489. Values for status:
  7490.  00h    successful
  7491.  01h    invalid function
  7492.  02h    semaphore already locked
  7493.  03h    unable to lock semaphore
  7494.  04h    semaphore space exhausted
  7495.  AH = semaphore owner if status=02h
  7496. --------N-6701-------------------------------
  7497. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  7498.     AH = 01h
  7499.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  7500. Return: AL = status (see AH=00h)
  7501.     AH = semaphore owner if status=02h
  7502. SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
  7503. --------N-6702-------------------------------
  7504. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  7505.     AH = 02h
  7506.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  7507. Return: AL = status (see AH=00h)
  7508.     AH = semaphore owner if status=02h
  7509. SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
  7510. --------m-671E-------------------------------
  7511. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - INSTALLATION CHECK
  7512.     AH = 1Eh
  7513. Return: AH = 00h if installed
  7514.         AL destroyed
  7515.         ES:DI -> ASCII signature "MemLimit"
  7516. SeeAlso: AH=1Fh,INT 21/AX=4402h"386MAX"
  7517. --------m-671F-------------------------------
  7518. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - API
  7519.     AH = 1Fh
  7520.     DS:SI -> request packet (see below)
  7521. Return: AH = status (00h successful, 84h invalid function code, etc.)
  7522. SeeAlso: AH=1Eh
  7523.  
  7524. Format of request packet:
  7525. Offset    Size    Description
  7526.  00h    WORD    function code (00h-0Fh)
  7527.  02h    WORD    return code (see below)
  7528.  04h  4 BYTEs    ???
  7529.  08h    WORD    ???
  7530.     ???
  7531.  
  7532. Values for return code:
  7533.  00h    unknown request
  7534.  01h    invalid parameter for VCPI limit
  7535.  02h    VCPI limit set
  7536.  03h    invalid parameter for EMS limit
  7537.  04h    EMS limit set
  7538.  05h    DPMI disabled
  7539.  06h    XMS disabled
  7540.  07h    XMS limit set
  7541.  08h    unable to uninstall
  7542.  09h    unloaded
  7543. --------m-673F--CX5145-----------------------
  7544. INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
  7545.     AH = 3Fh
  7546.     CX = 5145h ("QE")
  7547.     DX = 4D4Dh ("MM")
  7548. Return: AH = 00h if installed
  7549.         ES:DI -> QEMM API entry point
  7550. Notes:    if no other program has hooked INT 67, an alternate installation
  7551.       check is to test for the string
  7552.       "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  7553.       handler's segment; the word at offset 12h contains the offset in
  7554.       the handler's segment of the API entry point
  7555.     although this function is still undocumented, Quarterdeck has recently
  7556.       documented two alternate methods for determining the QEMM API entry
  7557.       point, as well as several of the API functions
  7558.     MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
  7559.       the alternate QEMM installation check and entry point functions 00h,
  7560.       02h, and 03h; version 4D only provides the signature string if the
  7561.       commandline argument "DV" is provided
  7562.     386MAX v6.01 responds to this call, but DESQview 2.42 does not
  7563.       recognize the returned entry point as providing QEMM's capabilities
  7564.       because a) only functions 0Ch (different from QEMM 0Ch) and
  7565.             1000h-1009h are supported,
  7566.           b) status is returned as for EMS functions, not QEMM funcs
  7567.           c) the protected-mode entry point returned by function 1000h
  7568.             only supports functions 0Ch, 1004h, 1005h, and 100Ah
  7569.     the string check mentioned above is not supported by 386MAX
  7570. SeeAlso: AX=5BF0h,AH=DDh,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h/SF=01h
  7571. SeeAlso: INT 21/AX=4402h"QEMM",INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
  7572.  
  7573. Call QEMM entry point with:
  7574.     AH = 00h get QEMM state (documented)
  7575.         Return: CF clear
  7576.             AL = QEMM state
  7577.                 bit 0 set if QEMM turned OFF
  7578.                 bit 1 set if in "Auto" mode
  7579.     AH = 01h set QEMM state (documented)
  7580.         AL = new state
  7581.             bit 0 set: place QEMM in OFF state
  7582.         Return: CF clear if successful
  7583.             CF set on error
  7584.     AH = 02h get ???
  7585.         Return: CF clear
  7586.             AX = segment of ??? data structure
  7587.             Data Structure
  7588.             Offset    Size    Description
  7589.              00h    DWORD    page table entry for ???
  7590.                 ???
  7591.     AH = 03h get QEMM version (documented)
  7592.         Return: CF clear
  7593.             AX = BX = version in BCD
  7594.         Notes:    the most recent official docs state that the version is
  7595.               returned in both AX and BX; older documentation only
  7596.               mentions BX
  7597.             MICEMM returns AX=0001h, BX unchanged
  7598.     AH = 04h allocate 4K page and set AUTO/ON mode
  7599.         Return: CF clear if successful
  7600.                 DX = page number of a 4K page
  7601.             CF set if unable to allocate page
  7602.         Note:    QEMM mode unchanged if not AUTO/OFF
  7603.     AH = 05h free 4K page and turn QEMM off
  7604.         DX = page number returned by function 04h
  7605.         Return: CF clear
  7606.         Note:    QEMM mode unchanged if not AUTO/ON
  7607.     AH = 06h make new mapping context???
  7608.         DX = page number of 4K page to hold page table
  7609.         Return: CF clear
  7610.         Note:    copies page table into given page and then sets ???
  7611.               page table entry to point at copy
  7612.     AH = 07h get mapping context
  7613.         Return: CF clear
  7614.             DX = page number of page table for current mapping
  7615.                 context
  7616.     AH = 08h set mapping context???
  7617.         DX = linear page number of page table
  7618.         Return: CF clear
  7619.     AH = 09h get linear page number for page table entry
  7620.         CX = page table index
  7621.         Return: CF clear
  7622.             DX = linear page number
  7623.     AH = 0Ah set linear page number for page table entry
  7624.         CX = page table index
  7625.         DX = linear page number
  7626.         Return: CF clear
  7627.     AH = 0Bh map 4K pages
  7628.         BX = number of pages
  7629.         CX = first page number (must be 0100h to allocate HMA)
  7630.         DX = EMS handle (memory belonging to EMS handle will be mapped
  7631.             into the address space beginning with the first page
  7632.             allocated to the handle)
  7633.         Return: AH = 00h
  7634.     AH = 0Ch get available memory
  7635.         Return: CF clear
  7636.             BX = 0001h
  7637.             CX = total 4K pages???
  7638.             DX = number of 4K pages free
  7639.     AH = 0Dh ??? (related to callbacks)
  7640.         AL = 00h/01h/02h ???
  7641.         Return: CF clear
  7642.     AH = 0Eh set ??? callbacks
  7643.         DS:BX -> FAR routine for ???
  7644.         ES:DX -> FAR routine for ???
  7645.         Return: CF clear
  7646.         Note:    DS:BX callback should return BX=???; ES:DX is called
  7647.               with BX=???, and should set the ??? from which the
  7648.               other handler read the value of BX.  BH and BL
  7649.               appear to be separate values.
  7650.     AH = 0Fh unmap 4K pages
  7651.         CX = first page number
  7652.         DX = number of pages
  7653.         Return: CF clear
  7654.             AL = 00h/01h if ???
  7655.         Note:    if CX=0100h and DX=0010h, the HMA is remapped to
  7656.               simulate a disabled A20
  7657.     AX = 1000h get protected-mode interface
  7658.         DS:SI -> 16-byte buffer for two GDT entries
  7659.         ES:DI -> buffer for 4K page table
  7660.         Return: CF clear
  7661.             EAX = offset of protected-mode API entry point
  7662.             DS:SI buffer filled with two GDT descriptors
  7663.                 first is QEMM code segment, second is data???
  7664.             ES:DI buffer filled with 4K page table
  7665.             DI points to first unused page table entry
  7666.         SeeAlso: INT 67/AX=DE01h
  7667.     AX = 1001h get CPU debug registers
  7668.         ES:DI -> buffer for debug registers (8 DWORDs)
  7669.         Return: CF clear
  7670.             BL = INT01 handling (see function 1002h)
  7671.             ES:DI buffer filled
  7672.     AX = 1002h set CPU debug registers
  7673.         BL = INT01 handling
  7674.             00h     reflect all debugging exceptions as V86-mode INT 01's
  7675.             else convert debugging exceptions other than single-step
  7676.                into V86-mode INT 03's, single-step to INT 01's
  7677.         ES:DI -> buffer containing debug registers (8 DWORDs)
  7678.         Return: CF clear
  7679.         Notes:    identical to INT 67/AX=DE09h if BL=01h
  7680.             the INT01 handling flag is set to 01h by the general-
  7681.               protection violation handler for certain privileged
  7682.               instructions
  7683.     AX = 1003h get machine status word CR0
  7684.         Return: CF clear
  7685.             EAX = contents of CR0
  7686.         SeeAlso: INT 67/AX=DE07h
  7687.     AX = 1004h allocate a 4K page
  7688.         Return: CF clear if successful
  7689.                 EDX = linear address of allocated page
  7690.             CF set on error
  7691.         SeeAlso: INT 67/AX=DE04h
  7692.     AX = 1005h free 4K page
  7693.         EDX = linear address of page to free
  7694.         Return: CF clear
  7695.         SeeAlso: INT 67/AX=DE05h
  7696.     AX = 1006h NOP
  7697.         Return: CF set
  7698.     AX = 1007h get maximum physical memory address
  7699.         Return: CF clear
  7700.             EDX = physical address of highest 4K memory page
  7701.         SeeAlso: INT 67/AX=DE02h
  7702.     AX = 1008h get physical address of page in first megabyte
  7703.         CX = page number (linear address shifted right 12 bits)
  7704.         Return: CF clear
  7705.             EDX = linear address of page
  7706.         SeeAlso: function 1F00h
  7707.     AX = 1009h switch to protected mode
  7708.         ESI = linear address in first megabyte of system reg values
  7709.             (see INT 67/AX=DE0Ch)
  7710.         interrupts disabled
  7711.         Return: interrupts disabled
  7712.             GDTR, IDTR, LDTR, TR loaded
  7713.             SS:ESP must have at least 16 bytes space, and the
  7714.                 entry point is required to set up a new stack
  7715.                 before enabling interrupts
  7716.             EAX, ESI, DS, ES, FS, GS destroyed
  7717.     AX = 100Ah switch back to virtual-86 mode
  7718.         DS = selector for data segment from function 1000h
  7719.         SS:ESP in first megabyte of linear memory
  7720.         interrupts disabled
  7721.         STACK:    QWORD  return address from FAR call to 32-bit segment
  7722.             DWORD  EIP
  7723.             DWORD  CS
  7724.             DWORD  reserved for EFLAGS
  7725.             DWORD  ESP
  7726.             DWORD  SS
  7727.             DWORD  ES
  7728.             DWORD  DS
  7729.             DWORD  FS
  7730.             DWORD  GS
  7731.         will switch to virtual86 mode with interrupts disabled, all
  7732.           segment registers loaded, and EAX destroyed.
  7733.     AH = 11h get memory type map
  7734.         AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
  7735.             by QEMM 6.00)
  7736.         ES:DI -> 256-byte buffer for memory types
  7737.         Return: CF clear
  7738.             BL = ???
  7739.             ES:DI buffer filled
  7740.         Note:    each byte of the buffer corresponds to a 4K page, and
  7741.               contains the type of that page: 00h = mappable,
  7742.               02h = mapped ROM, 03h = high RAM, 04h = excluded,
  7743.               05h = video, 06h = ROM, 07h = adapter ROM,
  7744.               08h = split ROM, 09h = page frame, 0Ah = RAMmable,
  7745.               0Bh = conventional
  7746.     AH = 12h get HIRAM chain
  7747.         Return: CF clear
  7748.             BX = segment of first MCB in high memory
  7749.                 0000h if no high memory
  7750.     AX = 1300h VIDRAMEGA???
  7751.         BL = 00h copy ???
  7752.              nonzero copy ??? (reverse)
  7753.         Return: CF clear
  7754.             AL = 00h if all pages clean
  7755.                = 01h if any page dirty
  7756.     AX = 1301h check if ???
  7757.         DX:DI = start address of range to check ???
  7758.         CX = length of range
  7759.         Return: CF clear
  7760.             CX = ??? (0000h or 1000h)
  7761.     AX = 1302h ???
  7762.         BL = ???
  7763.         BH = ???
  7764.         CX = ???
  7765.         SI = offset of ???
  7766.         DI = offset of ???
  7767.         ???
  7768.         Return: CF clear
  7769.             ???
  7770.         Note:    disables certain interrupts at the two 8259 PICs during
  7771.               execution; also modifies CRT controller during
  7772.               execution under certain circumstances
  7773.     AX = 1303h EMS allocation???
  7774.         BX = number of pages (less 1) of EMS to allocate
  7775.         Return: CF clear if successful
  7776.                 DX = EMS handle
  7777.             CF set on error
  7778.     AX = 1304h EMS deallocation
  7779.         DX = EMS handle
  7780.         Return: CF clear
  7781.     AX = 1305h ???
  7782.         CX = ???
  7783.         Return: CF clear
  7784.         Note:    disables certain interrupts at the two 8259 PICs during
  7785.               execution (see AX=130Ch)
  7786.     AX = 1306h set DESQview critical section counter address
  7787.         ES:BX -> WORD DESQview critical section counter or 0000h:0000h
  7788.         Return: CF clear
  7789.         Note:    also sets pointer in low-memory part of QEMM to current
  7790.               value of INT 15 if ES:BX not 0000h:0000h
  7791.     AX = 1307h ???
  7792.         Return: CF clear
  7793.         Note:    disables certain interrupts at the two 8259 PICs during
  7794.               execution (see AX=130Ch)
  7795.     AX = 1308h ???
  7796.         BL = ??? (zero/nonzero)
  7797.         Return: CF clear
  7798.     AX = 1309h Hercules mode-change support
  7799.         ES:BX -> new address for Hercules mode-change callback
  7800.         Return: CF clear
  7801.         Note:    the callback function is called whenever the CRTC mode
  7802.               register is written, with AL set to the value written
  7803.     AX = 130Ah virtualize EGA/VGA I/O ports 03C8h/03C9h???
  7804.         CX:DX -> buffer for storing CRTC register contents???
  7805.             or 0000h:0000h to disable
  7806.         Return: CF clear
  7807.     AX = 130Bh ???
  7808.         BL = ???
  7809.         Return: CF clear
  7810.             ???
  7811.     AX = 130Ch set interrupts to mask
  7812.         BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
  7813.             AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
  7814.         Return: CF clear
  7815.     AX = 130Dh ???
  7816.         ???
  7817.         Return: CF clear
  7818.         Note:    disables certain interrupts at the two 8259 PICs during
  7819.               execution (see AX=130Ch)
  7820.     AX = 130Eh ??? (modifies CRT controller setup)
  7821.         ???
  7822.         Return: CF clear
  7823.     AX = 130Fh reset ???
  7824.         Return: CF clear
  7825.     AX = 1310h ???
  7826.         ???
  7827.         Return: CF clear
  7828.         Note:    disables certain interrupts at the two 8259 PICs during
  7829.               execution (see AX=130Ch)
  7830.     AX = 1311h set ???
  7831.         BL = ???
  7832.         Return: CF clear
  7833.     AX = 1312h (v6.02) NOP???
  7834.         Note:    called by DV 2.42, but appears to be a NOP in QEMM 6.02
  7835.     AX = 1400h ???
  7836.         ES:DI -> ??? data structure (at least 24 bytes)
  7837.         BL = ???
  7838.         Return: AX = ???
  7839.         Data structure
  7840.         Offset    Size    Description
  7841.          00h    WORD    ???
  7842.          02h    DWORD    far pointer to ???
  7843.          06h    DWORD    far pointer to ??? pointer array (see below)
  7844.          0Ah    DWORD    far pointer to ???
  7845.          0Eh    DWORD    ???
  7846.          12h    WORD    segment of ???
  7847.          14h    DWORD    far pointer to ???
  7848.         Pointer array
  7849.         Offset    Size    Description
  7850.          00h    WORD    number of pointers to follow
  7851.          02h  N DWORDs    far pointers to ???
  7852.         Note: QEMM converts the pointers into linear addresses in place
  7853.     AX = 1401h ???
  7854.         Return: CF clear
  7855.             ???
  7856.     AX = 1402h ???
  7857.         BL = function
  7858.             00h NOP
  7859.             01h ???
  7860.             02h ???
  7861.             other ???
  7862.         ES:DI -> ???
  7863.         Return: CF clear
  7864.             ???
  7865.         Data structure
  7866.         Offset    Size    Description
  7867.          00h    WORD    segment of ??? (X, word at X:0136h set to X)
  7868.          02h    WORD    segment of ??? (word at X:0124h set to this)
  7869.          04h    WORD    number of paragraphs of ???
  7870.          06h  3 WORDs    ??? (copied to X:0000h)
  7871.          0Ch    WORD    ???
  7872.     AX = 1403h add ??? to list and ??? (execute func 1406h)
  7873.         ES:DI -> ??? structure added to end of ??? list
  7874.             (at least 31 bytes, DWORD at offset 06h used for
  7875.              storing pointer to next struc, WORD at offset 00h
  7876.              seems to be a key or index)
  7877.         Return: CF clear
  7878.     AX = 1404h NOP
  7879.     AX = 1405h remove ??? from ??? list
  7880.         BX = key???
  7881.         Return: CF clear
  7882.     AX = 1406h ???
  7883.         ???
  7884.         Return: CF clear
  7885.             ???
  7886.     AX = 1407h ???
  7887.         ???
  7888.         Return: CF clear
  7889.             ???
  7890.     AX = 1408h ???
  7891.         ???
  7892.         Return: CF clear
  7893.             ???
  7894.     AX = 1409h ???
  7895.         ???
  7896.         Return: CF clear
  7897.             ???
  7898.     AX = 140Ah ???
  7899.         BX = ???
  7900.         Return: CF clear
  7901.             ???
  7902.     AX = 140Bh ???
  7903.         BX = ???
  7904.         Return: CF clear
  7905.             SI = segment of 256-byte buffer???
  7906.     AH = 15h ???
  7907.         ES:BX -> ??? or 0000h:0000h
  7908.         Return: CF clear
  7909.      ---QEMM v5.00+ ---
  7910.     AX = 1600h get memory access status
  7911.         ES:DI -> 256-byte buffer
  7912.         Return: ES:DI buffer filled
  7913.         Note:    each byte of the buffer indicates the status of a 4K
  7914.               page (bit 0 set if read, bit 1 set if written)
  7915.     AX = 1601h set memory access status
  7916.         ES:DI -> 256-byte buffer containing access statuses (see above)
  7917.     AH = 17h get memory usage statistics
  7918.         ES:DI -> 81-byte buffer for memory statistics (see below)
  7919.         Return: CF clear
  7920.      ---QEMM v5.11+ ---
  7921.     AH = 18h check whether conventional memory mapped into address range
  7922.         ES:BX = starting address
  7923.         CX = number of 4K pages
  7924.         Return: CF clear
  7925.             AL = 00h one or more pages is remapped
  7926.                  01h all pages in range are conventional memory
  7927.                 (physical address == virtual address)
  7928.     AH = 19h NOP
  7929.         Return: CF set
  7930.     AH = 1Ah I/O port access
  7931.         AL = subfunction
  7932.             00h get byte from I/O port
  7933.             Return: BL = port value
  7934.             01h send byte to I/O port
  7935.             BL = value to send
  7936.             02h send byte to I/O port, get byte from following port
  7937.             BH = value to send
  7938.             Return: BL = value read
  7939.             03h send bytes to two consecutive I/O ports
  7940.             BH = value for first I/O port (DX)
  7941.             BL = value for second I/O port (DX+1)
  7942.         DX = port number
  7943.         Return: CF clear
  7944.     AH = 1Bh MS Windows 3.x support
  7945.         AL = subfunction
  7946.             00h get EMM Import Structure address
  7947.             ES:DI -> buffer for EMM import data structure
  7948.             Return: CF set on error
  7949.                 CF clear if successful
  7950.             EMM Import data structure:
  7951.             Offset    Size    Description
  7952.              00h    DWORD    physical address of EMM import struct
  7953.              04h    BYTE    major version (v6.00 sets to 01h)
  7954.              05h    BYTE    minor version (v6.00 sets to 00h/0Bh)
  7955.             SeeAlso: INT 21/AX=4402h/SF=01h
  7956.             01h ???
  7957.             Return: CF set on error
  7958.                 CF clear if successful
  7959.             02h ???
  7960.             Return: CF set on error
  7961.                 CF clear if successful
  7962.             03h MS Windows initializing
  7963.             CX = segment from which Windows init broadcast made???
  7964.             DL = Windows startup flags???
  7965.             DI = Windows version number (major in upper byte)
  7966.             Return: ???
  7967.             SeeAlso: INT 2F/AX=1605h
  7968.             04h MS Windows terminating
  7969.             Return: CF clear
  7970.             05h determine whether program is driver???
  7971.             DS:DX -> ASCIZ filename
  7972.             Return: CF clear
  7973.                 AL = 01h if string ends in ".DRV"
  7974.                    = FFh if string ends in "GDI.EXE"
  7975.                    = 00h otherwise
  7976.             06h ???
  7977.             CX = length of data pointed at by DS:DX
  7978.             DS:DX -> ???
  7979.             Return: CF clear
  7980.             07h BUG: QEMM 6.00-7.01 accept this and branch randomly
  7981.             else Return: CF set
  7982.     AH = 1Ch protected-mode hardware interrupt handlers ???
  7983.         AL = subfunction
  7984.             00h restore??? IRQ0-7 handlers
  7985.             01h set??? IRQ0-7 handlers
  7986.             ES:DI -> 8 DWORDs containing ???
  7987.             02h restore??? IRQ8-15 handlers
  7988.             03h set??? IRQ8-15 handlers
  7989.             ES:DI -> 8 DWORDs containing ???
  7990.         BUG: although the jump table only contains four entries,
  7991.             QEMM 6.00 will attempt to use it for any value of
  7992.             AL between 00h and 2Ah, thus branching unpredictably
  7993.             for AL=04h-2Ah; QEMM v7.01 behaves similarly for
  7994.             AL=04h-1Bh
  7995.      ---QEMM v6.00+ ---
  7996.     AH = 1Dh Stealth interrupts
  7997.         AL = subfunction
  7998.             00h switch to pre-Stealth interrupt vector table
  7999.             Note:    also switches VGA Save table pointer
  8000.                   (0040h:00A8h) and overwrites the vectors
  8001.                   currently assigned for use by the two
  8002.                   interrupt controllers (see INT 67/AX=DE0Ah)
  8003.                   with the vectors for INT 08-0F and 70-77 (to
  8004.                   avoid crashing the system).
  8005.             01h restore user interrupt vector table
  8006.             Notes:    interrupts should be disabled around the
  8007.                   AX=1D00h and AX=1D01h calls because QEMM does
  8008.                   not modify the memory maps to map in ROM, so
  8009.                   an interrupt could be disastrous
  8010.                 clears any pending IRQ7 at end of function
  8011.             else
  8012.             Return: CF set
  8013.         Note:    functions 1Dxxh are not supported by QEMM v7.01, and
  8014.               always return CF set
  8015.     AH = 1Eh Stealth information (documented)
  8016.         AL = subfunction
  8017.             00h "QEMM_GET_INFO" get Stealth configuration
  8018.             Return: BL = flags (documented as "reserved")
  8019.                     bit 0: conventional memory sorted
  8020.                     bit 1: conventional memory filled
  8021.                     bit 2: ???
  8022.                     bit 3: ???
  8023.                     bit 4: expanded memory is in use
  8024.                     bit 5: ???
  8025.                 BH = reserved (always 00h for v6.00)
  8026.                 CL = stealth type (00h none,46h Frame,4Dh Map)
  8027.                 CH = suspend/resume interrupt (00h none)
  8028.                 DX = reserved (always 0000h for v6.00)
  8029.                 SI = reserved (always 0000h for v6.00)
  8030.                 DI = reserved (always 0000h for v6.00)
  8031.             01h "QEMM_GET_STEALTH_COUNT" get number of Stealth'ed ROMs
  8032.             Return: CF clear
  8033.                 BX = number of Stealth'ed ROMs
  8034.             02h "QEMM_GET_STEALTH_LIST" get Stealth'ed ROM info
  8035.             ES:DI -> buffer for Stealth ROM info (see below)
  8036.             Return: CF clear
  8037.                 BX = number of Stealth'ed ROMs
  8038.                 ES:DI buffer filled
  8039.             else
  8040.             Return: CF set
  8041.     AH = 1Fh page table manipulation (documented)
  8042.         AL = subfunction
  8043.             00h "QEMM_GET_PTE" get page table entry
  8044.             CX = page number
  8045.             Return: EDX = page table entry
  8046.                 CF clear
  8047.             01h "QEMM_SET_PTE" set page table entry
  8048.             CX = page number
  8049.             EDX = new page table entry
  8050.             Return: CF clear
  8051.             SeeAlso: function 1008h
  8052.             else
  8053.             Return: CF set
  8054.     AH = 20h asynchronous disk access support (documented)
  8055.         AL = subfunction
  8056.             00h "QEMM_GET_VHI_INFO" get VirtualHDIRQ information
  8057.             Return: CF clear
  8058.                 BL = flags
  8059.                     bit 7: VirtualHDIRQ setting respected
  8060.                      (set if Stealth active)
  8061.                     bits 6-1 reserved
  8062.                     bit 0: VirtualHDIRQ currently enabled
  8063.                     (INT 15/AH=90h suppressed when enabled)
  8064.             01h "QEMM_SET_VHI_FINO" set VirtualHDIRQ state
  8065.             BL bit 0 = new VirtualHDIRQ state
  8066.             Return: CF clear
  8067.                 BL = old VHI setting (bits 0 and 7, see above)
  8068.             else
  8069.             Return: CF set
  8070.     AH = 21h Stealth support (documented)
  8071.         AL = subfunction
  8072.             00h "QEMM_COPY_STEALTH_ROMS" copy data from Stealthed addr
  8073.             DS:SI -> start address of hidden memory to copy
  8074.             ES:DI -> buffer for copied data
  8075.             ECX = number of bytes to copy
  8076.             Return: CF clear if successful
  8077.                 CF set on error (DS:SI < C000h:0000h or
  8078.                          DS:SI + ECX > 1M)
  8079.             else
  8080.             Return: CF set
  8081.     ---QEMM v6.03+ ---
  8082.     AH = 22h DESQview/X support
  8083.         AL = subfunction
  8084.             00h get ???
  8085.             Return: CF clear
  8086.                 ES:DI -> ???
  8087.             01h set ???
  8088.             ES:DI -> ??? or 0000h:0000h
  8089.             Return: CF clear if successful
  8090.                 CF set on error
  8091.     ---QEMM v6.04+ ---
  8092.     AH = 23h ???
  8093.         AL = subfunction
  8094.             00h get ???
  8095.             BX = which ??? to get (must be 0000h for v6.04)
  8096.             Return: CF clear if successful
  8097.                     ES:DI -> ???
  8098.                 CF set on error
  8099.             01h set ???
  8100.             BX = which ??? to set (must be 0000h for v6.04)
  8101.             ES:DI -> ???
  8102.             Return: CF clear if successful
  8103.                 CF set on error
  8104.             02h clear specified ???
  8105.             BX = which ??? to clear (must be 0000h for v6.04)
  8106.             Return: CF clear if successful
  8107.                 CF set on error
  8108.             FFh clear all ???
  8109.             else
  8110.             Return: CF set
  8111.     ---QEMM v7.01 only---
  8112.     AH = 24h ST-DBL support
  8113.         AL = subfunction
  8114.             00h set ???
  8115.             EDX -> information table
  8116.                 (EDX = segment SHL 16 + offset)
  8117.             01h ???
  8118.     other
  8119.         Return: CF set
  8120.  
  8121. Format of QEMM 6.0 memory statistics:
  8122. Offset    Size    Description
  8123.  00h    BYTE    01h if Shadow RAM found, 00h otherwise
  8124.  01h    DWORD    initial conventional memory in bytes
  8125.  05h    DWORD    initial extended memory in bytes
  8126.  09h    DWORD    initial expanded memory in bytes
  8127.  0Dh    DWORD    initial "top" or "shadow" memory in bytes
  8128.  11h    DWORD    Unavailable conventional memory in bytes
  8129.  15h    DWORD    Unavailable extended memory in bytes
  8130.  19h    DWORD    Unavailable expanded memory in bytes
  8131.  1Dh    DWORD    Unavailable "top" or "shadow" memory in bytes
  8132.         Add to offset 49h for Total unavailable top/shadow.
  8133.  21h    DWORD    QEMM code size in bytes
  8134.  25h    DWORD    QEMM data size in bytes
  8135.  29h    DWORD    bytes used for TASKS=
  8136.  2Dh    DWORD    DMA buffer size
  8137.  31h    DWORD    bytes used for MAPS=
  8138.  35h    DWORD    bytes of high RAM
  8139.  39h    DWORD    bytes used by mapped ROMs
  8140.  3Dh    DWORD    bytes of conventional memory provided by QEMM
  8141.  41h    DWORD    bytes of extended memory NOT converted by QEMM (EXT=xxx)
  8142.  45h    DWORD    bytes of EMS/XMS pool memory provided by QEMM
  8143.  49h    DWORD    Unavailable "top" or "shadow" memory in bytes
  8144.         Add to offset 1Dh for Total unavailable top/shadow.
  8145.  4Dh    DWORD    conventional memory overhead in bytes
  8146.         (set to 0 by QEMM.COM prior to call)
  8147.  
  8148. Format of Stealth ROM info [array]:
  8149. Offset    Size    Description
  8150.  00h    WORD    starting segment of ROM
  8151.  02h    WORD    length of ROM in paragraphs
  8152. --------m-6740-------------------------------
  8153. INT 67 - LIM EMS - GET MANAGER STATUS
  8154.     AH = 40h
  8155. Return: AH = status (00h,80h,81h,84h) (see below)
  8156. Note:    this call can be used only after establishing that the EMS driver is in
  8157.       fact present
  8158. SeeAlso: AH=3Fh,AX=FFA5h
  8159.  
  8160. Values for EMS function status:
  8161.  00h    successful
  8162.  80h    internal error
  8163.  81h    hardware malfunction
  8164.  83h    invalid handle
  8165.  84h    undefined function requested by application
  8166.  85h    no more handles available
  8167.  86h    error in save or restore of mapping context
  8168.  87h    insufficient memory pages in system
  8169.  88h    insufficient memory pages available
  8170.  89h    zero pages requested
  8171.  8Ah    invalid logical page number encountered
  8172.  8Bh    invalid physical page number encountered
  8173.  8Ch    page-mapping hardware state save area is full
  8174.  8Dh    save of mapping context failed
  8175.  8Eh    restore of mapping context failed
  8176.  8Fh    undefined subfunction
  8177.  90h    undefined attribute type
  8178.  91h    feature not supported
  8179.  92h    successful, but a portion of the source region has been overwritten
  8180.  93h    length of source or destination region exceeds length of region
  8181.       allocated to either source or destination handle
  8182.  94h    conventional and expanded memory regions overlap
  8183.  95h    offset within logical page exceeds size of logical page
  8184.  96h    region length exceeds 1M
  8185.  97h    source and destination EMS regions have same handle and overlap
  8186.  98h    memory source or destination type undefined
  8187.  9Ah    specified alternate map register or DMA register set not supported
  8188.  9Bh    all alternate map register or DMA register sets currently allocated
  8189.  9Ch    alternate map register or DMA register sets not supported
  8190.  9Dh    undefined or unallocated alternate map register or DMA register set
  8191.  9Eh    dedicated DMA channels not supported
  8192.  9Fh    specified dedicated DMA channel not supported
  8193.  A0h    no such handle name
  8194.  A1h    a handle found had no name, or duplicate handle name
  8195.  A2h    attempted to wrap around 1M conventional address space
  8196.  A3h    source array corrupted
  8197.  A4h    operating system denied access
  8198. --------m-6741-------------------------------
  8199. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  8200.     AH = 41h
  8201. Return: AH = 00h function successful
  8202.         BX = segment of page frame
  8203.     AH = error code (see AH=40h)
  8204. SeeAlso: AH=58h,AH=68h
  8205. --------m-6742-------------------------------
  8206. INT 67 - LIM EMS - GET NUMBER OF PAGES
  8207.     AH = 42h
  8208. Return: AH = 00h function successful
  8209.         BX = number of unallocated pages
  8210.         DX = total number of pages
  8211.     AH = error code (see AH=40h)
  8212. SeeAlso: INT 2F/AX=2702h
  8213. --------m-6743-------------------------------
  8214. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  8215.     AH = 43h
  8216.     BX = number of logical pages to allocate
  8217. Return: AH = status (00h,80h,81h,84h,85h,87h,88h,89h) (see AH=40h)
  8218.     DX = handle if AH=00h
  8219. SeeAlso: AH=45h
  8220. --------m-6744-------------------------------
  8221. INT 67 - LIM EMS - MAP MEMORY
  8222.     AH = 44h
  8223.     AL = physical page number (0-3)
  8224.     BX = logical page number
  8225.     DX = handle
  8226. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh) (see AH=40h)
  8227. SeeAlso: AH=69h
  8228. --------m-6745-------------------------------
  8229. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  8230.     AH = 45h
  8231.     DX = EMM handle
  8232. Return: AH = status (00h,80h,81h,83h,84h,86h) (see AH=40h)
  8233. SeeAlso: AH=43h
  8234. --------m-6746-------------------------------
  8235. INT 67 - LIM EMS - GET EMM VERSION
  8236.     AH = 46h
  8237. Return: AH = status (00h,80h,81h,84h) (see AH=40h)
  8238.     AL = EMM version number if AH=00h
  8239. --------m-6747-------------------------------
  8240. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  8241.     AH = 47h
  8242.     DX = handle
  8243. Return: AH = status (see below)
  8244. SeeAlso: AH=48h
  8245.  
  8246. Values for status:
  8247.  00h    successful
  8248.  80h    internal error
  8249.  81h    hardware malfunction
  8250.  83h    invalid handle
  8251.  84h    undefined function requested
  8252.  8Ch    page-mapping hardware state save area is full
  8253.  8Dh    save of mapping context failed
  8254.  8Eh    restore of mapping context failed
  8255. --------m-6748-------------------------------
  8256. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  8257.     AH = 48h
  8258.     DX = handle
  8259. Return: AH = status (00h,80h,81h,83h,84h,8Eh) (see AH=47h)
  8260. SeeAlso: AH=47h
  8261. --------m-6749-------------------------------
  8262. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  8263.     AH = 49h
  8264. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  8265. --------m-674A-------------------------------
  8266. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  8267.     AH = 4Ah
  8268. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  8269. --------m-674B-------------------------------
  8270. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  8271.     AH = 4Bh
  8272. Return: AH = status (see below)
  8273.     BX = number of EMM handles if AH=00h
  8274.  
  8275. Values for status:
  8276.  00h    successful
  8277.  80h    internal error
  8278.  81h    hardware malfunction
  8279.  83h    invalid handle
  8280.  84h    undefined function requested
  8281. --------m-674C-------------------------------
  8282. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  8283.     AH = 4Ch
  8284.     DX = EMM handle
  8285. Return: AH = status (see AH=4Bh)
  8286.     BX = number of logical pages if AH=00h
  8287. SeeAlso: AH=4Dh
  8288. --------m-674D-------------------------------
  8289. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  8290.     AH = 4Dh
  8291.     ES:DI -> array to receive information
  8292. Return: AH = status (00h,80h,81h,84h) (see AH=4Bh)
  8293.     ---if AH=00h---
  8294.     BX = number of active EMM handles
  8295.     array filled with 2-word entries, consisting of a handle and the
  8296.       number of pages allocated to that handle
  8297. SeeAlso: AH=4Ch
  8298. --------m-674E-------------------------------
  8299. INT 67 - LIM EMS - GET OR SET PAGE MAP
  8300.     AH = 4Eh
  8301.     AL = 00h if getting mapping registers
  8302.          01h if setting mapping registers
  8303.          02h if getting and setting mapping registers at once
  8304.          03h if getting size of page-mapping array
  8305.     DS:SI -> array holding information (AL=01h/02h)
  8306.     ES:DI -> array to receive information (AL=00h/02h)
  8307. Return: AH = status
  8308.         00h successful
  8309.         AL = bytes in page-mapping array (AL=03h only)
  8310.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  8311.         80h internal error
  8312.         81h hardware malfunction
  8313.         84h undefined function requested
  8314.         8Fh undefined subfunction parameter
  8315.         A3h contents of source array corrupted (EMS 4.0?)
  8316. Notes:    this function was designed to be used by multitasking operating systems
  8317.       and should not ordinarily be used by appplication software.
  8318.     MD386 returns the size of the page-mapping array in AX instead of AL
  8319. SeeAlso: AH=4Fh
  8320. --------m-674F-------------------------------
  8321. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  8322.     AH = 4Fh
  8323.     AL = subfunction
  8324.         00h get partial page map
  8325.            DS:SI -> structure containing list of segments whose mapping
  8326.             contexts are to be saved
  8327.            ES:DI -> array to receive page map
  8328.         01h set partial page map
  8329.            DS:SI -> structure containing saved partial page map
  8330.         02h get size of partial page map
  8331.            BX = number of mappable segments in the partial map to be saved
  8332. Return: AH = status
  8333.         00h successful
  8334.         80h internal error
  8335.         81h hardware malfunction
  8336.         84h undefined function requested
  8337.         8Bh one of specified segments is not mappable
  8338.         8Fh undefined subfunction parameter
  8339.         A3h contents of partial page map corrupted or count of mappable
  8340.         segments exceeds total number of mappable segments in system
  8341.     AL = size of partial page map for subfunction 02h
  8342. SeeAlso: AH=4Eh
  8343. --------m-6750-------------------------------
  8344. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  8345.     AH = 50h
  8346.     AL = subfunction
  8347.         00h use physical page numbers
  8348.         01h use segment addresses
  8349.     DX = handle
  8350.     CX = number of entries in array
  8351.     DS:SI -> mapping array (see below)
  8352. Return: AH = status
  8353.         00h successful
  8354.         80h internal error
  8355.         81h hardware malfunction
  8356.         83h invalid handle
  8357.         84h undefined function requested
  8358.         8Ah one or more logical pages are invalid
  8359.         8Bh one or more physical pages are invalid
  8360.         8Fh invalid subfunction
  8361. SeeAlso: AH=40h
  8362.  
  8363. Format of mapping array entry:
  8364. Offset    Size    Description
  8365.  00h    WORD    logical page number or FFFFh to unmap physical page
  8366.  02h    WORD    physical page number or segment address
  8367. --------m-6751-------------------------------
  8368. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  8369.     AH = 51h
  8370.     DX = handle
  8371.     BX = number of pages to be allocated to handle
  8372. Return:    AH = status (00h,80h,81h,83h,84h,87h,88h) (see below)
  8373.     BX = actual number of pages allocated to handle
  8374.  
  8375. Values for status:
  8376.  00h    successful
  8377.  80h    internal error
  8378.  81h    hardware malfunction
  8379.  83h    invalid handle
  8380.  84h    undefined function requested
  8381.  87h    more pages requested than present in system
  8382.  88h    more pages requested than currently available
  8383.  8Fh    undefined subfunction
  8384.  90h    undefined attribute type
  8385.  91h    feature not supported
  8386.  A0h    no such handle name
  8387.  A1h    duplicate handle name
  8388. --------m-6752-------------------------------
  8389. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  8390.     AH = 52h
  8391.     AL = subfunction
  8392.         00h get handle attributes
  8393.         Return: AL = attribute
  8394.                 00h handle is volatile
  8395.                 01h handle is nonvolatile
  8396.         01h set handle attributes
  8397.         BL = new attribute (see returned AL)
  8398.         02h get attribute capability
  8399.         Return: AL = attribute capability
  8400.                 00h only volatile handles supported
  8401.                 01h both volatile and non-volatile supported
  8402.     DX = handle
  8403. Return: AH = status (00h,80h,81h,83h,84h,8Fh-91h) (see AH=51h)
  8404. SeeAlso: AH=53h
  8405. --------m-6753-------------------------------
  8406. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  8407.     AH = 53h
  8408.     AL = subfunction
  8409.         00h get handle name
  8410.            ES:DI -> 8-byte buffer for handle name
  8411.         01h set handle name
  8412.            DS:SI -> 8-byte handle name
  8413.     DX = handle
  8414. Return: AH = status (00h,80h,81h,83h,84h,8Fh,A1h) (see AH=51h)
  8415. SeeAlso: AH=52h
  8416. --------m-6754-------------------------------
  8417. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  8418.     AH = 54h
  8419.     AL = subfunction
  8420.         00h get handle directory
  8421.            ES:DI -> buffer for handle directory (see below)
  8422.         01h search for named handle
  8423.            DS:SI -> 8-byte name
  8424.         02h get total number of handles
  8425. Return: AL = number of entries in handle directory (subfunction 00h)
  8426.     DX = value of named handle (subfunction 01h)
  8427.     BX = total number of handles (subfunction 02h)
  8428.     AH = status (00h,80h,81h,84h,8Fh,A0h,A1h) (see also AH=51h)
  8429.         A1h a handle found had no name
  8430.  
  8431. Format of handle directory entry:
  8432. Offset    Size    Description
  8433.  00h    WORD    handle
  8434.  02h  8 BYTEs    handle's name
  8435. --------m-6755-------------------------------
  8436. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  8437.     AH = 55h
  8438.     AL = subfunction
  8439.         00h physical page numbers provided by caller
  8440.         01h segment addresses provided by caller
  8441.     DX = handle
  8442.     DS:SI -> structure containing map and jump address
  8443. Return: (at target address unless error)
  8444.     AH = status (see below)
  8445. SeeAlso: AH=56h
  8446.  
  8447. Values for status:
  8448.  00h    successful
  8449.  80h    internal error
  8450.  81h    hardware failure
  8451.  83h    invalid handle
  8452.  84h    undefined function requested
  8453.  8Ah    invalid logical page number encountered
  8454.  8Bh    invalid physical page number encountered
  8455.  8Fh    invalid subfunction
  8456. --------m-6756-------------------------------
  8457. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  8458.     AH = 56h
  8459.     AL = subfunction
  8460.         00h physical page numbers provided by caller
  8461.         DX = handle
  8462.         DS:SI -> structure containing page map and call address
  8463.         01h segment addresses provided by caller
  8464.         DX = handle
  8465.         DS:SI -> structure containing page map and call address
  8466.         02h get page map stack space required
  8467.         Return: BX = stack space required
  8468. Return: (if successful, the target address is called.  Use a RETF to return and
  8469.      restore mapping context)
  8470.     AH = status (see AH=55h)
  8471. SeeAlso: AH=55h
  8472. --------m-6756FF-----------------------------
  8473. INT 67 - RM386 v6.00 - ???
  8474.     AX = 56FFh
  8475.     DS:SI -> ???
  8476.     ???
  8477. Return: ???
  8478. --------m-6757-------------------------------
  8479. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  8480.     AH = 57h
  8481.     AL = subfunction
  8482.         00h move memory region
  8483.         01h exchange memory region
  8484.     DS:SI -> structure describing source and destination (see below)
  8485. Return: AH = status (see below)
  8486. Note:    source and destination may overlap for a move, in which case the copy
  8487.       direction is chosen such that the destination receives an intact copy
  8488.       of the source region
  8489.  
  8490. Values for status:
  8491.  00h    successful
  8492.  80h    internal error
  8493.  81h    hardware failure
  8494.  83h    invalid handle
  8495.  84h    undefined function requested
  8496.  8Ah    invalid logical page number encountered
  8497.  8Fh    undefined subfunction
  8498.  92h    successful, but a portion of the source region has been overwritten
  8499.  93h    length of source or destination region exceeds length of region
  8500.       allocated to either source or destination handle
  8501.  94h    conventional and expanded memory regions overlap
  8502.  95h    offset within logical page exceeds size of logical page
  8503.  96h    region length exceeds 1M
  8504.  97h    source and destination EMS regions have same handle and overlap
  8505.  98h    memory source or destination type undefined
  8506.  A2h    attempted to wrap around 1M conventional address space
  8507.  
  8508. Format of EMS copy data:
  8509. Offset    Size    Description
  8510.  00h    DWORD    region length in bytes
  8511.  04h    BYTE    source memory type
  8512.         00h conventional
  8513.         01h expanded
  8514.  05h    WORD    source handle (0000h if conventional memory)
  8515.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  8516.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  8517.  0Bh    BYTE    destination memory type
  8518.         00h conventional
  8519.         01h expanded
  8520.  0Ch    WORD    destination handle
  8521.  0Eh    WORD    destination initial offset
  8522.  10h    WORD    destination initial segment or page
  8523. --------m-6758-------------------------------
  8524. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  8525.     AH = 58h
  8526.     AL = subfunction
  8527.         00h get mappable physical address array
  8528.         ES:DI -> buffer to be filled with array
  8529.         01h get number of entries in m.p.a. array
  8530. Return: CX = number of entries in array
  8531.     AH = status (00h,80h,81h,84h,8Fh) (see AH=57h)
  8532. Note:    the returned array for subfunction 00h is filled in physical segment
  8533.       address order
  8534.  
  8535. Format of mappable physical address entry:
  8536. Offset    Size    Description
  8537.  00h    WORD    physical page segment
  8538.  02h    WORD    physical page number
  8539. --------m-675857-----------------------------
  8540. INT 67 U - NETROOM??? - ???
  8541.     AX = 5857h
  8542.     BX = function??? (0057h,0059h,0159h seen)
  8543.     ???
  8544. Return: ???
  8545. Note:    BX=0059h appears to be analogous to AX=5800h and BX=0159h appears to
  8546.       be analogous to AX=5801h; BX=0057h appears to indicate whether
  8547.       AX=580xh or AX=5857h/BX=0x59h should be used
  8548. SeeAlso: AX=5BF0h
  8549. --------m-6759-------------------------------
  8550. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  8551.     AH = 59h
  8552.     AL = subfunction
  8553.         00h get hardware configuration array
  8554.         ES:DI -> buffer to be filled with array (see below)
  8555.         01h get unallocated raw page count
  8556.         Return: BX = unallocated raw pages
  8557.             DX = total raw pages
  8558. Return: AH = status (see also AH=58h"EMS 4.0")
  8559.         A4h access denied by operating system
  8560. Note:    subfunction 00h is for use by operating systems only, and can be
  8561.       enabled or disabled at any time by the operating system
  8562.  
  8563. Format of hardware configuration array:
  8564. Offset    Size    Description
  8565.  00h    WORD    size of raw EMM pages in paragraphs
  8566.  02h    WORD    number of alternate register sets
  8567.  04h    WORD    size of mapping-context save area in bytes
  8568.  06h    WORD    number of register sets assignable to DMA
  8569.  08h    WORD    DMA operation type
  8570.         0000h DMA with alternate register sets
  8571.         0001h only one DMA register set
  8572. --------m-675A-------------------------------
  8573. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  8574.     AH = 5Ah
  8575.     AL = subfunction
  8576.         00h allocate standard pages
  8577.         01h allocate raw pages
  8578.     BX = number of pages to allocate
  8579. Return: DX = handle
  8580.     AH = status
  8581.         00h successful
  8582.         80h internal error
  8583.         81h hardware failure
  8584.         84h undefined function requested
  8585.         85h no more handles available
  8586.         87h insufficient memory pages in system
  8587.         88h insufficient memory pages available
  8588.         8Fh undefined subfunction
  8589. --------m-675B-------------------------------
  8590. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  8591.     AH = 5Bh
  8592.     AL = subfunction
  8593.         00h get alternate map register set
  8594.         Return: BL = current active alternate map register set number
  8595.             ES:DI -> map register context save area if BL=00h
  8596.         01h set alternate map register set
  8597.         BL = new alternate map register set number
  8598.         ES:DI -> map register context save area if BL=0
  8599.         02h get alternate map save array size
  8600.         Return: DX = array size in bytes
  8601.         03h allocate alternate map register set
  8602.         Return: BL = number of map register set; 00h = not supported
  8603.         04h deallocate alternate map register set
  8604.         BL = number of alternate map register set
  8605. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Dh,A3h,A4h) (see below)
  8606. Note:    this function is for use by operating systems only, and can be
  8607.       enabled or disabled at any time by the operating system
  8608.  
  8609. Values for status:
  8610.  00h    successful
  8611.  80h    internal error
  8612.  81h    hardware malfunction
  8613.  84h    undefined function requested
  8614.  8Fh    undefined subfunction
  8615.  9Ah    specified alternate map register or DMA register set not supported
  8616.  9Bh    all alternate map register or DMA register sets currently allocated
  8617.  9Ch    alternate map register or DMA register sets not supported
  8618.  9Dh    undefined or unallocated alternate map register/DMA register set
  8619.  9Eh    dedicated DMA channels not supported
  8620.  9Fh    specified dedicated DMA channel not supported
  8621.  A3h    source array corrupted
  8622.  A4h    operating system denied access
  8623. --------m-675B-------------------------------
  8624. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  8625.     AH = 5Bh
  8626.     AL = subfunction
  8627.         05h allocate DMA register set
  8628.         Return: BL = DMA register set number, 00h if not supported
  8629.         06h enable DMA on alternate map register set
  8630.            BL = DMA register set number
  8631.            DL = DMA channel number
  8632.         07h disable DMA on alternate map register set
  8633.            BL = DMA register set number
  8634.         08h deallocate DMA register set
  8635.            BL = DMA register set number
  8636. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Fh,A3h,A4h) (see AH=5Ah)
  8637. Note:    this function is for use by operating systems only, and can be
  8638.       enabled or disabled at any time by the operating system
  8639. --------m-675BE0-----------------------------
  8640. INT 67 - MICEMM v4D, RM386 - GET LINEAR ADDRESS OF MEMORY
  8641.     AX = 5BE0h
  8642.     ES:BX -> memory for which to get linear address
  8643. Return: AH = 00h
  8644.     CX:DX = linear address of physical memory corresponding to ES:BX
  8645. Program: RAM-MAN/386 is the memory manager included with Helix's Netroom;
  8646.       MICEMM is a memory manager for some Micronics motherboards
  8647. Note:    this has been superceded by AX=DE06h, which should be used instead
  8648. SeeAlso: AX=5BF0h,AX=5BF1h,AX=DE06h
  8649. --------m-675BE1-----------------------------
  8650. INT 67 - RM386 v6.00+ - GET MEMORY MANAGER SIZE
  8651.     AX = 5BE1h
  8652. Return: AH = 00h
  8653.     CX = code and data size in bytes
  8654.     DX:BX = physical address of RM386 code
  8655.     DI:SI = total size of RM386 area including handle tables
  8656.     BP = number of additional pages (high DOS, etc.)
  8657. SeeAlso: AX=5BE0h,AX=5BE2h
  8658. --------m-675BE2-----------------------------
  8659. INT 67 - RM386 v6.00+ - GET INTERRUPT VECTORS
  8660.     AX = 5BE2h
  8661. Return: DS:SI -> V86-mode table (see below)
  8662.     ES:BX -> ??? (undoc, middle of device driver interrupt routine!)
  8663. SeeAlso: AX=5BE0h,AX=5BE1h
  8664.  
  8665. Format of V86-mode table:
  8666. Offset    Size    Description
  8667.  00h    DWORD    original INT 13 vector
  8668.  04h    DWORD    original INT 15 vector
  8669.  08h    DWORD    original INT 19 vector
  8670.  0Ch    DWORD    original INT 21 vector
  8671.  10h    DWORD    original INT 4B vector
  8672.  14h    DWORD    original INT 67 vector
  8673. --------m-675BF0-----------------------------
  8674. INT 67 - MICEMM v4D, RM386 - INSTALLATION CHECK
  8675.     AX = 5BF0h
  8676. Return: AH = 00h if MICEMM or RM386 present
  8677.         BX = code segment of driver
  8678. Program: MICEMM is the Micronics Expanded Memory Manager; RM386 is the memory
  8679.       manager included in Helix Software's Netroom
  8680. SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
  8681. --------m-675BF1-----------------------------
  8682. INT 67 - MICEMM v4D, RM386 - GET ADDRESS MAP
  8683.     AX = 5BF1h
  8684.     ES:BX -> 256-byte (MICEMM) or 512-byte (RM386) buffer for memory types
  8685. Return: AH = 00h
  8686.     ES:BX buffer filled
  8687. Note:    each byte in the buffer specifies the type of a 4K page of memory
  8688. SeeAlso: AX=5BE0h,AX=5BF0h
  8689.  
  8690. Values for memory type:
  8691.  00h    unused (MICEMM), RAM/available (RM386)
  8692.  02h    DOS extension (XMS UMB)
  8693.  04h    shadowed ROM
  8694.  08h    mappable EMS
  8695.  10h    page frame
  8696.  20h    ROM
  8697.  40h    reserved (video memory, etc)
  8698.  80h    RAM (MICEMM), Windows UMB (RM386)
  8699. --------m-675BF2-----------------------------
  8700. INT 67 - RM386 - GET RM386 INTERNAL DATA
  8701.     AX = 5BF2h
  8702.     CX = size of buffer
  8703.     DS:SI -> buffer for internal data
  8704.     (documentation says ES:BX -> buffer, SI = offset within RM386)
  8705. Return: buffer filled
  8706. Note:    the data returned by this function is release-specific
  8707. SeeAlso: AX=5BF0h
  8708. --------m-675BF3-----------------------------
  8709. INT 67 - RM386 - RETURN TO REAL MODE
  8710.     AX = 5BF3h
  8711. Return: nothing
  8712. Note:    use AX=5DE0h instead of this functin
  8713. SeeAlso: AX=5BF0h,AX=5DE0h
  8714. --------m-675BF4-----------------------------
  8715. INT 67 - RM386 v6.00 - GET RM386 GLOBAL FLAGS
  8716.     AX = 5BF4h
  8717. Return: AH = 00h
  8718.     BX = global flags 1 (see below)
  8719.     CX = global flags 2 (see below)
  8720.     DX = global flags 3 (see below)
  8721.     SI = global flags 4 (see below)
  8722. SeeAlso: AX=5BF0h
  8723.  
  8724. Bitfields for global flags 1:
  8725.  bits 0-3 reserved
  8726.  bit 4    V86 mode
  8727.  bit 5    reserved
  8728.  bit 6    80386 or higher CPU
  8729.  bits 7,8 reserved
  8730.  bit 9    A20 enabled at startup
  8731.  bit 10 "HIGH_IO"
  8732.  bit 11 ROM
  8733.  bit 12 large frame
  8734.  bits 13,14 reserved
  8735.  bit 15 PS/2-style A20 control
  8736.  
  8737. Bitfields for global flags 2:
  8738.  bit 0    HMA in use
  8739.  bit 1    XMS present
  8740.  bit 2    using XMS driver memory
  8741.  bit 3    HIGH (NEAT only)
  8742.  bits 4-7 reserved
  8743.  bit 8    NOBKTRAP
  8744.  bit 9    NORESET
  8745.  bit 10 ALTMAP
  8746.  bit 11 NOFRAME
  8747.  bits 12-15 reserved
  8748.  
  8749. Bitfields for global flags 3:
  8750.  bit 0    NOTEST
  8751.  bit 1    NOEBDA
  8752.  bit 2    Windows3 support
  8753.  bit 3    system board mouse
  8754.  bit 4    DISKBUF
  8755.  bit 5    EBDALOW
  8756.  bit 6    A20 global enable flag
  8757.  bit 7    A20 flag
  8758.  bit 8    EBDA moved to stub
  8759.  bit 9    VXD file was found
  8760.  bit 10 reserved
  8761.  bit 11 NOBOOTMAP
  8762.  bit 12 AUTO
  8763.  bit 13 PS/2 machine
  8764.  bit 14 Compaq ROM merge active
  8765.  bit 15 NOHMA set
  8766.  
  8767. Bitfields for global flags 4:
  8768.  bit 0    "NOV8259" don't virtualize interrupt controller
  8769.  bit 1    NOSCSI
  8770.  bit 2    NOSCAN
  8771.  bit 3    NOTR
  8772.  bit 4    ALTBOOT
  8773.  bit 5    NOCOMPQ
  8774.  bit 6    KB2TRAP
  8775.  bit 7    DESHADOW
  8776.  bit 8    Video 7 VGA detected
  8777.  bit 9    reserved
  8778.  bit 10 NOVGA
  8779.  bit 11 NOPS2
  8780.  bit 12 DEBUG
  8781.  bit 13 NOVKB
  8782.  bits 14,15 reserved
  8783. --------m-675BF5-----------------------------
  8784. INT 67 - RM386 v6.00 - GET RM386 EMS HANDLE COUNT
  8785.     AX = 5BF5h
  8786. Return: AH = status
  8787.         00h successful
  8788.         BX = current number of allocated EMS handles
  8789.         84h function not available
  8790. SeeAlso: AX=5BF0h
  8791. --------m-675C-------------------------------
  8792. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  8793.     AH = 5Ch
  8794. Return: AH = status (see below)
  8795.  
  8796. Values for status:
  8797.  00h    successful
  8798.  80h    internal error
  8799.  81h    hardware malfunction
  8800.  84h    undefined function requested
  8801. --------m-675D-------------------------------
  8802. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  8803.     AH = 5Dh
  8804.     AL = subfunction
  8805.         00h enable OS Function Set
  8806.         01h disable OS Function Set
  8807.         02h return access key (resets memory manager, returns access key at
  8808.         next invocation)
  8809.     BX,CX = access key returned by first invocation
  8810. Return: BX,CX = access key, returned only on first invocation of function
  8811.     AH = status (see also AH=5Ch)
  8812.         8Fh undefined subfunction
  8813.         A4h operating system denied access
  8814. --------m-675D03-----------------------------
  8815. INT 67 u - Nanosoft MD386 - INTERNAL INITIALIZATION
  8816.     AX = 5D03h
  8817.     ???
  8818. Return: ???
  8819. Program: MD386 is a subset EMS memory manager by Nanosoft specifically designed
  8820.       for use with the MultiDOS Plus multitasker
  8821. SeeAlso: AX=5D04h,AX=5E00h
  8822. --------m-675D04-----------------------------
  8823. INT 67 - Nanosoft MD386 - GET ALTERNATE MAP STRUCTURE
  8824.     AX = 5D04h
  8825.     BX = alternate register set number
  8826.     ES:DI -> 1024-byte buffer for map structure
  8827. Return: AH = status (see AH=40h)
  8828.     buffer filled if AH=00h
  8829. Note:    used for debugging purposes
  8830. SeeAlso: AX=5D05h
  8831. --------m-675D05-----------------------------
  8832. INT 67 - Nanosoft MD386 - GET INTERNAL HANDLE TABLE
  8833.     AX = 5D05h
  8834.     BX = handle number
  8835.     ES:DI -> 1024-byte buffer for handle table
  8836. Return: AH = status (see AH=40h)
  8837.     buffer filled if AH=00h
  8838. Note:    used for debugging purposes
  8839. SeeAlso: AX=5D04h
  8840. --------m-675DE0-----------------------------
  8841. INT 67 - RM386 - DISABLE RM386
  8842.     AX = 5DE0h
  8843. Note:    RM386 traps this functions on the initial transition to protected
  8844.       mode caused by the INT instruction, which means it can not be
  8845.       overridden simply by hooking the interrupt
  8846. SeeAlso: AX=5DE1h
  8847. --------m-675DE1-----------------------------
  8848. INT 67 - RM386 - ENABLE RM386
  8849.     AX = 5DE1h
  8850. Note:    RM386 traps this functions on the initial transition to protected
  8851.       mode caused by the INT instruction, which means it can not be
  8852.       overridden simply by hooking the interrupt
  8853. SeeAlso: AX=5DE0h
  8854. --------m-675DE2-----------------------------
  8855. INT 67 - RM386 - GET PAGE TABLE
  8856.     AX = 5DE2h
  8857.     ES:DI -> 1088-byte buffer for page table
  8858. Return: ES:DI buffer filled
  8859. Note:    RM386 traps this functions on the initial transition to protected
  8860.       mode caused by the INT instruction, which means it can not be
  8861.       overridden simply by hooking the interrupt
  8862. SeeAlso: AX=5DE3h
  8863. --------m-675DE3-----------------------------
  8864. INT 67 - RM386 - GET PAGE TABLE
  8865.     AX = 5DE3h
  8866.     ES:DI -> 1088-byte buffer containing page table
  8867. Notes:    only the access bits of the page table are used, the remainder is
  8868.       ignored
  8869.     RM386 traps this functions on the initial transition to protected
  8870.       mode caused by the INT instruction, which means it can not be
  8871.       overridden simply by hooking the interrupt
  8872. SeeAlso: AX=5DE2h
  8873. --------m-675DE4-----------------------------
  8874. INT 67 - RM386 - SET WRITE-PROTECTION FOR PAGE IN FIRST MEGABYTE
  8875.     AX = 5DE4h
  8876.     BL = page number
  8877.     BH = access (00h read-only, 01h read-write)
  8878. Note:    RM386 traps this functions on the initial transition to protected
  8879.       mode caused by the INT instruction, which means it can not be
  8880.       overridden simply by hooking the interrupt
  8881. --------m-675DE5-----------------------------
  8882. INT 67 - RM386 - MAP PHYSICAL PAGE TO PHYSICAL SEGMENT
  8883.     AX = 5DE5h
  8884.     EBX = physical page number
  8885.     DX = page number in first megabyte to be remapped (linear-addr SHR 12)
  8886. Return: AH = status
  8887.         00h successful
  8888.         8Bh invalid destination page (not in first megabyte)
  8889. Note:    RM386 traps this functions on the initial transition to protected
  8890.       mode caused by the INT instruction, which means it can not be
  8891.       overridden simply by hooking the interrupt
  8892. SeeAlso: AX=5DE6h
  8893. --------m-675DE6-----------------------------
  8894. INT 67 - RM386 - MAP LOGICAL 4K PAGE TO PHYSICAL SEGMENT
  8895.     AX = 5DE6h
  8896.     BX = logical page number in 4K pages from beginning of memory for EMS
  8897.         handle
  8898.     CX = segment in first megabyte to be remapped
  8899.     DX = previously-allocated EMS handle
  8900. Return: AH = status
  8901.         00h successful
  8902.         83h invalid handle
  8903.         8Ah invalid logical page (out of handle's range)
  8904.         8Bh invalid destination page (not in first megabyte)
  8905. Note:    RM386 traps this functions on the initial transition to protected
  8906.       mode caused by the INT instruction, which means it can not be
  8907.       overridden simply by hooking the interrupt
  8908. SeeAlso: AX=5DE5h
  8909. --------m-675DE7-----------------------------
  8910. INT 67 - RM386 - SET PAGE TABLE BITS FOR RANGE OF PAGES
  8911.     AX = 5DE7h
  8912.     BL = page table bits to be set (bits 2-0 = U/S, R/W, P)
  8913.     CX = number of pages to set
  8914.     DX = first page number to set (in first megabyte)
  8915. Return: AH = status
  8916.         00h successful
  8917.         8Bh invalid destination page (not in first megabyte)
  8918.         A5h invalid page bits
  8919.         A6h invalid page count (overflows first megabyte)
  8920. Note:    RM386 traps this functions on the initial transition to protected
  8921.       mode caused by the INT instruction, which means it can not be
  8922.       overridden simply by hooking the interrupt
  8923. --------m-675DE8-----------------------------
  8924. INT 67 - RM386 - GET PARTIAL PAGE TABLE
  8925.     AX = 5DE8h
  8926.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  8927.     CX = number of page table entries to get
  8928.     ES:DI -> buffer for DWORD page table entries
  8929. Return: AH = status (00h successful, 8Bh invalid page)
  8930. Note:    RM386 traps this functions on the initial transition to protected
  8931.       mode caused by the INT instruction, which means it can not be
  8932.       overridden simply by hooking the interrupt
  8933. SeeAlso: AX=5DE9h
  8934. --------m-675DE9-----------------------------
  8935. INT 67 - RM386 - SET PARTIAL PAGE TABLE
  8936.     AX = 5DE9h
  8937.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  8938.     CX = number of page table entries to get
  8939.     DS:SI -> buffer of DWORD page table entries
  8940. Return: AH = status (00h successful, 8Bh invalid destination page)
  8941. Note:    RM386 traps this functions on the initial transition to protected
  8942.       mode caused by the INT instruction, which means it can not be
  8943.       overridden simply by hooking the interrupt
  8944. SeeAlso: AX=5DE8h
  8945. --------m-675DEA-----------------------------
  8946. INT 67 - RM386 - V86-MODE I/O PORT TRAPPING CONTROL
  8947.     AX = 5DEAh
  8948.     BX = function
  8949.         00h globally disable V86-mode trapping
  8950.         01h globally enable V86-mode trapping
  8951.         CL = interrupt to use for trapping
  8952.         02h get I/O trapping state
  8953. Return: AH = status
  8954.         00h successful
  8955.         BX = current trapping state (function 02h)
  8956.             0000h disabled, 0001h enabled
  8957.         CX = interrupt used as trap interrupt (functions 00h and 02h)
  8958. Notes:    RM386 traps this functions on the initial transition to protected
  8959.       mode caused by the INT instruction, which means it can not be
  8960.       overridden simply by hooking the interrupt
  8961.     when I/O trapping is enabled and I/O port access occurs, RM386
  8962.       simulates an INT instruction for the specified interrupt; the
  8963.       interrupt handler is responsible for decoding the trapped instruction
  8964.       and performing the appropriate action.  INT 2C/AX=002Dh provides a
  8965.       similar but more-easily used interface.
  8966. SeeAlso: AX=5DEBh,AH=EFh"RM386",INT 2C/AX=002Dh
  8967. --------m-675DEB-----------------------------
  8968. INT 67 - RM386 - V86-MODE I/O TRAPPING PORT CONTROL
  8969.     AX = 5DEBh
  8970.     BX = function
  8971.         00h disable V86-mode trapping for specified port
  8972.         01h enable V86-mode trapping for specified port
  8973.         02h get V86-mode trapping state for specified port
  8974.     DX = port for which to enable/disable/query trapping
  8975. Return: AH = status
  8976.         00h successful
  8977.         BX = current trapping state (00h off, 01h on) (function 02)
  8978.         A7h invalid port ID
  8979.         A8h reserved port--cannot trap/untrap (DMA/INT/KBD controllers)
  8980. Notes:    RM386 traps this functions on the initial transition to protected
  8981.       mode caused by the INT instruction, which means it can not be
  8982.       overridden simply by hooking the interrupt
  8983. SeeAlso: AX=5DEAh
  8984. --------m-675DFD-----------------------------
  8985. INT 67 U - RM386 v6.00 - ???
  8986.     AX = 5DFDh
  8987.     ???
  8988. Return: ???
  8989. Note:    RM386 traps this function on the initial transition to protected
  8990.       mode caused by the INT instruction, which means it can not be
  8991.       overridden simply by hooking the interrupt
  8992. SeeAlso: AX=5DFEh
  8993. --------m-675DFE-----------------------------
  8994. INT 67 U - RM386 v6.00 - ???
  8995.     AX = 5DFEh
  8996.     ???
  8997. Return: ???
  8998. Note:    RM386 traps this function on the initial transition to protected
  8999.       mode caused by the INT instruction, which means it can not be
  9000.       overridden simply by hooking the interrupt
  9001. SeeAlso: AX=5DFDh
  9002. --------m-675DFF-----------------------------
  9003. INT 67 U - RM386 v6.00 - ???
  9004.     AX = 5DFFh
  9005.     ???
  9006. Return: ???
  9007. Note:    RM386 traps this function on the initial transition to protected
  9008.       mode caused by the INT instruction, which means it can not be
  9009.       overridden simply by hooking the interrupt
  9010. SeeAlso: AX=5DFDh,AX=5DFEh
  9011. --------m-675E00-----------------------------
  9012. INT 67 - Nanosoft MD386 - SET HARDWARE BREAKPOINT
  9013.     AX = 5E00h
  9014.     DH = breakpoint number (0-3)
  9015.     DL = breakpoint attributes (used to set DR7)
  9016.     CX:BX = linear address of breakpoint
  9017. SeeAlso: AX=5D03h,AX=5E01h
  9018. --------m-675E01-----------------------------
  9019. INT 67 - Nanosoft MD386 - GET HARDWARE DEBUG REGISTER
  9020.     AX = 5E01h
  9021.     BL = register number (0-3,7)
  9022. Return: CX:BX = value of specified DRx register
  9023. SeeAlso: AX=5E00h
  9024. --------m-675E02-----------------------------
  9025. INT 67 - Nanosoft MD386 - SET DEBUG EXCEPTION HANDLER
  9026.     AX = 5E02h
  9027.     CX:BX -> exception handler
  9028. Note:    the specified exception handler is called with a simulated interrupt
  9029.       whenever a debug exception occurs which was caused by a hardware
  9030.       breakpoint set with the debug registers
  9031. SeeAlso: AX=5E04h,AX=5E05h
  9032. --------m-675E03-----------------------------
  9033. INT 67 - Nanosoft MD386 - ENABLE/DISABLE MEMORY WRITE PROTECTION
  9034.     AX = 5E03h
  9035.     BL = register map set number
  9036.     BH = new state (00h read-only, else read-write)
  9037.     CX = linear page number (linear address SHR 12)
  9038. Note:    setting write protection in map set 0 will cause the setting to become
  9039.       the default for newly-allocated map sets
  9040. --------m-675E04-----------------------------
  9041. INT 67 - Nanosoft MD386 - GET DEBUG EXCEPTION
  9042.     AX = 5E04h
  9043. Return: BL = debug exception (low byte of DR6 register)
  9044. SeeAlso: AX=5E02h,AX=5E05h
  9045. --------m-675E05-----------------------------
  9046. INT 67 - Nanosoft MD386 - IGNORE NEXT DEBUG EXCEPTION
  9047.     AX = 5E05h
  9048. Note:    may be required when using AX=5E02h for handling instruction
  9049.       breakpoints
  9050. SeeAlso: AX=5E02h,AX=5E04h
  9051. --------m-6760-------------------------------
  9052. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  9053.     AH = 60h
  9054.     ES:DI -> buffer
  9055. Return: AH = status (see also AH=40h)
  9056.     AL = number of entries
  9057.     buffer at ES:DI filled
  9058. --------m-6761-------------------------------
  9059. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  9060.     AH = 61h
  9061.     ???
  9062. Return: ???
  9063. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  9064.       ensuring that the cache accurately reflects what the processor would
  9065.       see without the cache.
  9066. --------m-6768-------------------------------
  9067. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  9068.     AH = 68h
  9069.     ES:DI -> buffer
  9070. Return: AH = status (see also AH=40h)
  9071.     AL = number of entries
  9072.     buffer at ES:DI filled
  9073. Note:    equivalent to LIM 4.0 function 58h
  9074. --------m-6769-------------------------------
  9075. INT 67 - EEMS - MAP PAGE INTO FRAME
  9076.     AH = 69h
  9077.     AL = frame number
  9078.     BX = page number
  9079.     DX = handle
  9080. Return: AH = status (see also AH=40h)
  9081. Note:    similar to EMS function 44h
  9082. SeeAlso: AH=44h,AH=50h,AH=6Ah
  9083. --------m-676A-------------------------------
  9084. INT 67 - EEMS - PAGE MAPPING
  9085.     AH = 6Ah
  9086.     AL = subfunction
  9087.         00h save partial page map
  9088.         CH = first page frame
  9089.         CL = number of frames
  9090.         ES:DI -> buffer which is to be filled
  9091.         01h restore partial page map
  9092.         CH = first page frame
  9093.         CL = number of frames
  9094.         DI:SI -> previously saved page map
  9095.         02h save and restore partial page map
  9096.         CH = first page frame
  9097.         CL = number of frames
  9098.         ES:DI = buffer for current page map
  9099.         DI:SI = new page map
  9100.         03h get size of save array
  9101.         CH = first page frame
  9102.         CL = number of frames
  9103.         Return: AL = size of array in bytes
  9104.         04h switch to standard map register setting
  9105.         05h switch to alternate map register setting
  9106.         06h deallocate pages mapped to frames in conventional memory
  9107.         CH = first page frame
  9108.         CL = number of frames
  9109. Return: AH = status (see also AH=40h)
  9110. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  9111.       specified
  9112. SeeAlso: AH=69h
  9113. --------m-676B-------------------------------
  9114. INT 67 - DESQview 2.42-2.53 - BUG
  9115.     AH = 6Bh
  9116. Note:    the EMM.DVR portion of DESQview branches to a random location on this
  9117.       function due to a fencepost error
  9118. --------m-67DD-------------------------------
  9119. INT 67 - Quadtel QMAPS - API
  9120.     AH = DDh
  9121.     AL = function
  9122.     ???
  9123. Return: ???
  9124. Notes:    details are not yet available
  9125.     Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
  9126.       supports this API
  9127. SeeAlso: AH=3Fh,AX=FFA5h
  9128. --------E-67DE00-----------------------------
  9129. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  9130.     AX = DE00h
  9131. Return: AH = 00h    VCPI is present
  9132.         BH = major version number
  9133.         BL = minor version number
  9134.     AH nonzero  VCPI not present
  9135. SeeAlso: INT 2F/AX=1687h
  9136. --------E-67DE01-----------------------------
  9137. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  9138.     AX = DE01h
  9139.     ES:DI -> 4K page table buffer
  9140.     DS:SI -> three descriptor table entries in GDT
  9141.         first becomes code segment descriptor, other two for use by
  9142.         main control program
  9143. Return: AH = 00h successful
  9144.         DI -> first unused page table entry in buffer
  9145.         EBX -> protected mode entry point in code segment
  9146.     AH = nonzero  failed
  9147. Note:    protected mode entry point may be called with AX=DE00h-DE05h and
  9148.       AX=DE0Ch (in each case, all other registers as appropriate for
  9149.       the function)
  9150. SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
  9151.  
  9152. QEMM v6.03 protected mode entry point may also be called with:
  9153.     AX = DF00h ???
  9154.         ???
  9155.         Return: ???
  9156.     AX = DF01h ???
  9157.         ???
  9158.         Return: ???
  9159. --------E-67DE02-----------------------------
  9160. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  9161.     AX = DE02h
  9162. Return: AH = 00h  successful
  9163.         EDX = physical address of highest 4K memory page
  9164.     AH nonzero: failed
  9165. SeeAlso: AH=3Fh
  9166. --------E-67DE03-----------------------------
  9167. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  9168.     AX = DE03h
  9169. Return: AH = 00h  successful
  9170.         EDX = number of free 4K pages
  9171.     AH nonzero: failed
  9172. Notes:    returns total number of pages available to ALL tasks in system
  9173.     also available in protected mode by calling the protected-mode VCPI
  9174.       entry point
  9175. SeeAlso: AX=DE04h
  9176. --------E-67DE04-----------------------------
  9177. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  9178.     AX = DE04h
  9179. Return: AH = 00h successful
  9180.         EDX = physical address of allocated page
  9181.     AH nonzero: failed
  9182. Notes:    the client program is responsible for freeing all memory allocated
  9183.       with this call before terminating
  9184.     also available in protected mode by calling the protected-mode VCPI
  9185.       entry point
  9186. SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
  9187. --------E-67DE05-----------------------------
  9188. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  9189.     AX = DE05h
  9190.     EDX = physical address of 4K page
  9191. Return: AH = 00h successful
  9192.     AH nonzero: failed
  9193. Note:    also available in protected mode by calling the protected-mode VCPI
  9194.       entry point
  9195. SeeAlso: AH=3Fh,AX=DE04h
  9196. --------E-67DE06-----------------------------
  9197. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  9198.     AX = DE06h
  9199.     CX = page number (linear address shifted right 12 bits)
  9200. Return: AH = 00h successful
  9201.         EDX = physical address of page
  9202.     AH nonzero: invalid page number (AH = 8Bh recommended)
  9203. SeeAlso: AX=5BE0h
  9204. --------E-67DE07-----------------------------
  9205. INT 67 - Virtual Control Program Interface - READ CR0
  9206.     AX = DE07h
  9207. Return: AH = 00h
  9208.     EBX = value of Control Register 0
  9209. SeeAlso: AH=3Fh,AX=DE07h
  9210. --------E-67DE08-----------------------------
  9211. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  9212.     AX = DE08h
  9213.     ES:DI -> array of 8 DWORDs
  9214. Return: AH = 00h
  9215.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  9216. SeeAlso: AH=3Fh,AX=DE09h
  9217. --------E-67DE09-----------------------------
  9218. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  9219.     AX = DE09h
  9220.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  9221. Return: AH = 00h
  9222. Note:    values for DR4 and DR5 ignored
  9223. SeeAlso: AH=3Fh,AX=DE08h
  9224. --------E-67DE0A-----------------------------
  9225. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  9226.     AX = DE0Ah
  9227. Return: AH = 00h successful
  9228.         BX = first vector used by master 8259 (IRQ0)
  9229.         CX = first vector used by slave 8259 (IRQ8)
  9230.     AH nonzero: failed
  9231. Note:    CX is undefined in systems without a slave 8259
  9232. SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
  9233. --------E-67DE0B-----------------------------
  9234. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  9235.     AX = DE0Bh
  9236.     BX = first vector used by master 8259
  9237.     CX = first vector used by slave 8259
  9238.     interrupts disabled
  9239. Return: AH = 00h successful
  9240.     AH nonzero: failed
  9241. Notes:    This call merely informs the server that the client has changed the
  9242.       interrupt mappings.  The client may not change the mappings if they
  9243.       have already been changed by the server or another client, and is
  9244.       responsible for restoring the original mappings before terminating.
  9245. SeeAlso: AX=DE0Ah,INT 2C/AX=002Ah
  9246. --------E-67DE0C-----------------------------
  9247. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  9248.     AX = DE0Ch
  9249.     ESI = linear address in first megabyte of values for system registers
  9250.     interrupts disabled
  9251. Return: interrupts disabled
  9252.     GDTR, IDTR, LDTR, TR loaded
  9253.     SS:ESP must have at least 16 bytes space, and the entry point is
  9254.         required to set up a new stack before enabling interrupts
  9255.     EAX, ESI, DS, ES, FS, GS destroyed
  9256. SeeAlso: AH=3Fh,INT 15/AH=89h,INT 38/AH=10h
  9257.  
  9258. Note:    in protected mode, calling the protected-mode VCPI entry point with
  9259.       AX = DE0Ch
  9260.       DS = segment selector mapping entire linear address space obtained
  9261.         via AX=DE01h
  9262.       SS:ESP in first megabyte of linear memory
  9263.       STACK:QWORD  return address from FAR call to 32-bit segment
  9264.         DWORD  EIP
  9265.         DWORD  CS
  9266.         DWORD  reserved for EFLAGS
  9267.         DWORD  ESP
  9268.         DWORD  SS
  9269.         DWORD  ES
  9270.         DWORD  DS
  9271.         DWORD  FS
  9272.         DWORD  GS
  9273.       and interrupts disabled, will switch to virtual86 mode with
  9274.       interrupts disabled, all segment registers loaded, and EAX destroyed.
  9275.  
  9276. Format of system register values for switch to protected mode:
  9277. Offset    Size    Description
  9278.  00h    DWORD    value for CR3
  9279.  04h    DWORD    linear address in first megabyte of value for GDTR
  9280.  08h    DWORD    linear address in first megabyte of value for IDTR
  9281.  0Ch    WORD    value for LDTR
  9282.  0Eh    WORD    value for TR
  9283.  10h    PWORD    CS:EIP of protected mode entry-point
  9284. --------m-67DE0F-----------------------------
  9285. INT 67 - Netroom3 - ???
  9286.     AX = DE0Fh
  9287.     ???
  9288. Return: ???
  9289. Note:    called by Netroom's DPMI.EXE
  9290. --------m-67EF-------------------------------
  9291. INT 67 - RM386 v6.00+ - EXECUTE XMS FUNCTION
  9292.     AH = EFh
  9293.     AL = function (00h-12h,80h-8Fh)
  9294.     other register as appropriate for XMS function
  9295. Return: varies by function (see INT 2F/AX=4310h)
  9296. Note:    these functions appear to be equivalent to the XMS functions with the
  9297.       same numbers
  9298. SeeAlso: AH=5Dh"RM386",INT 2F/AX=4310h
  9299. --------m-67FFA5-----------------------------
  9300. INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
  9301.     AX = FFA5h
  9302. Return: AX = 845Ah if loaded
  9303.         BX:CX -> API entry point
  9304. Notes:    this call is available even if EMM386 is not providing EMS
  9305.     if no other program has hooked INT 67, an alternate installation
  9306.       check is to test for the string
  9307.       "MICROSOFT EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  9308.       handler's segment; the word immediately preceding this string
  9309.       contains the offset of the API entry point
  9310. SeeAlso: AH=3Fh,AX=FFA5h/BX=4345h,INT 21/AX=4402h"EMM386.EXE"
  9311.  
  9312. Call API entry point with:
  9313.     AH = 00h get memory manager's status
  9314.         Return: AH = status
  9315.             bit 0: not active (OFF)
  9316.             bit 1: in "Auto" mode
  9317.     AH = 01h set memory manager's state
  9318.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  9319.     AH = 02h Weitek coprocessor support
  9320.         AL = subfunction
  9321.         00h get Weitek support state
  9322.             Return: AL = status
  9323.                 bit 0: Weitek coprocessor is present
  9324.                 bit 1: Weitek support is enabled
  9325.         01h turn on Weitek support
  9326.         02h turn off Weitek support
  9327.      --- v4.20-4.41 only ---
  9328.     AH = 03h Windows support???
  9329.         AL = subfunction (00h, 01h)
  9330.     AH = 04h print copyright notice to standard output
  9331.          (using INT 21/AH=09h)
  9332.     AH = 05h print available report
  9333.          (the one shown when running EMM386 from the DOS prompt)
  9334. ----------67FFA5BX4345-----------------------
  9335. INT 67 U - Compaq CEMM v5.10+ - PRIVATE API
  9336.     AX = FFA5h
  9337.     BX = 4345h ("CE")
  9338.     DX = subfunction
  9339.         0000h unshadow video ROM???
  9340.         0001h shadow video ROM???
  9341.         0002h map pages
  9342.         CX = number of pages (00h=one)
  9343.         ESI = linear address of first page to map into address space
  9344.         EDI = linear starting address at which pages are to be visible
  9345.         0003h get ???
  9346.         Return: DX = ??? (0-2)
  9347.         0004h BUG: crashes system due to fencepost error
  9348. Return: AH = 84h
  9349.     AL = status (84h = error, FFh = success)
  9350. Note:    if BX <> 4345h or DX > 0004h on entry, CEMM behaves identically to
  9351.       Microsoft's EMM386 (see AX=FFA5h"EMM386")
  9352. SeeAlso: AX=FFA5h"EMM386"
  9353. --------!------------------------------------
  9354.